Пропустить до содержимого

Как использовать argparse модуль в Python?

[

Создание командной строки с использованием argparse в Python

Командные приложения могут быть не распространены среди обычных пользователей, но они присутствуют в разработке, науке о данных, системном администрировании и многих других областях деятельности. Каждому командному приложению нужен удобный интерфейс командной строки (CLI), чтобы вы могли взаимодействовать с самим приложением. В Python вы можете создавать полнофункциональные CLIs с помощью модуля argparse из стандартной библиотеки.

Введение в командные строки

В первой части этого руководства вы ознакомитесь с основами командных интерфейсов. Вы узнаете о терминах, таких как команды, аргументы, опции, параметры и подкоманды.

Командные интерфейсы (CLIs)

Командные интерфейсы (CLI) предоставляют возможность взаимодействия с программами через командную строку. Пользователь может выполнять различные команды, передавать аргументы и опции, а также использовать подкоманды для выполнения определенных задач. CLIs широко используются в различных приложениях, таких как системы командной строки операционных систем, среды разработки и сценарии автоматизации задач.

Команды, аргументы, опции, параметры и подкоманды

  • Команды - это основные действия, которые пользователь может выполнить при работе с программой. Каждая команда выполняет определенную функцию и может принимать аргументы, опции и параметры.
  • Аргументы - это значения, передаваемые программе при выполнении команды. Аргументы обычно используются для передачи информации, такой как имена файлов, адреса или другие данные, с которыми программа должна работать.
  • Опции - это флаги или флажки, которые позволяют задавать дополнительные параметры или поведение программы. Опции могут быть флагами типа да/нет или принимать значение. Обычно опции начинаются с символа ”-” или ”—“.
  • Параметры - это значения, которые можно передать определенной команде или подкоманде. Параметры могут указывать на различные настройки, режимы работы или другую информацию, необходимую для выполнения команды.
  • Подкоманды - это дополнительные команды, которые могут быть выполнены в рамках основной команды. Подкоманды обычно выполняют специфические задачи или предлагают различные функции, связанные с основной программой.

Начало работы с CLIs в Python: sys.argv против argparse

Во второй части этого руководства вы узнаете разницу между использованием sys.argv и argparse для создания CLIs в Python.

Использование sys.argv для создания миниимального CLI

sys.argv - это список строк, представляющих аргументы командной строки, переданные при запуске программы. Вы можете использовать sys.argv для создания простого CLI, но оно может быть неудобным при наличии большого количества аргументов и опций.

Создание CLI с помощью argparse

argparse - это полнофункциональная библиотека для создания командных интерфейсов в Python. Она позволяет определять аргументы, опции, параметры и подкоманды для вашего CLI и автоматически обрабатывать ввод пользователя.

В этой части вы узнаете, как создать объект ArgumentParser, добавить аргументы и опции, а также как разобрать введенные аргументы командной строки.

Создание командных интерфейсов с помощью argparse в Python

В третьей части этого руководства мы рассмотрим процесс создания командных интерфейсов с использованием argparse в Python. Вы узнаете, как создать парсер аргументов командной строки, добавить аргументы и опции, а также как разобрать введенные аргументы командной строки и определить их значения.

Создание парсера аргументов командной строки

Первый шаг при использовании argparse - создание объекта ArgumentParser. Этот объект представляет парсер аргументов командной строки, который будет использоваться для разбора введенных пользователем аргументов.

import argparse
# Создание парсера аргументов командной строки
parser = argparse.ArgumentParser(description='Описание вашей программы')

Добавление аргументов и опций

После создания парсера аргументов командной строки вы можете добавить аргументы и опции, которые пользователь может использовать при запуске вашей программы. Вот несколько примеров:

# Добавление аргумента с обязательным значением
parser.add_argument('filename', help='Имя файла для обработки')
# Добавление опции флага
parser.add_argument('-v', '--verbose', action='store_true', help='Выводить дополнительную информацию')
# Добавление опции с обязательным значением
parser.add_argument('-n', '--count', type=int, help='Количество повторений')

Разбор аргументов командной строки и определение их значений

На этом этапе вы можете разобрать введенные пользователем аргументы командной строки и определить их значения. argparse автоматически проверяет их совместимость с определенными аргументами и опциями.

# Разбор аргументов командной строки
args = parser.parse_args()
# Использование разобранных аргументов и определение их значений
filename = args.filename
verbose = args.verbose
count = args.count

Настройка внешнего вида и системы сборки вашего CLI приложения

В четвертой части этого руководства вы узнаете, как настроить внешний вид и систему сборки вашего CLI приложения с использованием argparse. Это может включать настройку помощи и сообщений об ошибках, установку глобальных настроек для аргументов и опций, и другие функции, которые облегчат использование вашей программы.

Настраиваем парсер аргументов командной строки

В пятой части этого руководства мы поговорим о настройке парсера аргументов командной строки в argparse. Вы узнаете, как настраивать помощь программы и содержание использования, а также как предоставлять глобальные настройки для аргументов и опций.

Изменение содержания помощи и использования программы

argparse позволяет вам настраивать содержание и форматирование помощи программы, которая выводится, когда пользователь запрашивает справку о программе или передает неправильные аргументы командной строки.

# Настройка содержания помощи и использования программы
parser.usage = 'myprogram [options]'
parser.description = 'Описание вашей программы'
parser.epilog = 'Завершающая информация или текст'

Предоставление глобальных настроек для аргументов и опций

Вы также можете предоставить глобальные настройки для определенных аргументов и опций вашего CLI. Например, вы можете задать значение по умолчанию для опции или установить ограничения или проверки для определенного аргумента.

# Предоставление глобальных настроек для опции
parser.set_defaults(verbose=True)
# Установка ограничений для аргумента
parser.add_argument('count', type=int, choices=range(1, 10))

Тонкая настройка аргументов и опций командной строки

В шестой части этого руководства вы узнаете, как тонко настроить аргументы и опции командной строки с использованием argparse. Вы узнаете, как настраивать действие, связанное с опцией, как настраивать входные значения аргументов и опций, а также как предоставлять и настраивать сообщения справки для аргументов и опций.

Настройка действия, связанного с опцией

По умолчанию argparse сохраняет значения опций в разные атрибуты объекта Namespace. Вы можете настроить действие, связанное с опцией, чтобы изменить их поведение. Например, вы можете удалить опцию из объекта Namespace или выполнять произвольное действие при указании опции.

# Настройка действия для опции
parser.add_argument('-v', '--verbose', action='store_true', help='Выводить дополнительную информацию')
parser.add_argument('-q', '--quiet', action='store_false', dest='verbose', help='Не выводить информацию')

Настройка входных значений аргументов и опций

argparse имеет множество встроенных типов входных значений, которые вы можете использовать для аргументов и опций командной строки. Вы также можете определить свои собственные типы и настроить их поведение.

# Использование встроенного типа входных значений
parser.add_argument('age', type=int, choices=range(18, 65))
# Определение собственного типа входных значений
class MyType:
def __call__(self, value):
# Проверка значения и возврат валидного результата
return ...
# Настройка типа входных значений для аргумента
parser.add_argument('id', type=MyType())

Предоставление и настройка сообщений справки для аргументов и опций

Вы также можете предоставить свои собственные сообщения справки для аргументов и опций командной строки. Например, вы можете определить разные сообщения для обязательных аргументов и опций или предоставить дополнительные примеры использования.

# Предоставление сообщения справки для аргумента
parser.add_argument('filename', help='Имя файла для обработки', metavar='FILE')
# Предоставление сообщения справки для опции
parser.add_argument('-v', '--verbose', action='store_true', help='Выводить дополнительную информацию')
# Предоставление дополнительных примеров использования
parser.usage = 'myprogram [options]'
parser.epilog = 'Примеры использования:\nmyprogram -h\nmyprogram -v myfile.txt'

Определение взаимоисключающих аргументов и опций

В седьмой части этого руководства мы рассмотрим, как определить взаимоисключающие группы аргументов и опций в вашем CLI. Вы научитесь определять группы, в которых пользователь может использовать только один аргумент или опцию из заданных, и как сообщать об ошибках, когда пользователь нарушает это ограничение.

# Определение взаимоисключающих аргументов
group = parser.add_mutually_exclusive_group()
group.add_argument('-a', '--optionA', action='store_true')
group.add_argument('-b', '--optionB', action='store_true')
# Определение взаимоисключающих опций
parser.add_argument('-c', '--color', choices=['red', 'green', 'blue'])
parser.add_argument('-s', '--size', choices=['small', 'medium', 'large'])

Добавление подкоманд к вашим CLIs

В восьмой части этого руководства вы узнаете, как добавлять подкоманды к вашим CLIs с использованием argparse. Вы научитесь определять и обрабатывать подкоманды, а также как разделять опции и аргументы между основными командами и их подкомандами.

# Добавление подкоманды
subparsers = parser.add_subparsers(dest='command')
# Создание подпарсера для подкоманды
subparser = subparsers.add_parser('subcommand')
# Определение аргументов и опций для подкоманды
subparser.add_argument('arg')
subparser.add_argument('-v', '--verbose', action='store_true', help='Выводить дополнительную информацию')

Обработка завершения выполнения вашего CLI приложения

В девятой части этого руководства мы рассмотрим, как обрабатывать завершение выполнения вашего CLI приложения с использованием argparse. Вы научитесь контролировать процесс завершения работы программы, включая вывод результата и обработку ошибок.

# Обработка завершения выполнения программы
try:
# Здесь находится ваш код для выполнения команды
...
# Вывод результата и завершение программы
print('Success!')
sys.exit(0)
except Exception as e:
# Обработка ошибок и вывод сообщения об ошибке
print('Error:', str(e))
sys.exit(1)

Заключение

Завершающая часть этого руководства подводит итоги и дает рекомендации по использованию argparse для создания командных интерфейсов в Python. Вы узнали, как создавать командные интерфейсы с использованием argparse, настраивать их внешний вид и поведение, а также как добавлять подкоманды и обрабатывать завершение работы программы.

Заключение

В данном руководстве мы рассмотрели, как использовать модуль argparse для создания командных интерфейсов в Python. Вы узнали, как организовать и описать свой проект командной строки, создать парсер аргументов командной строки, добавить аргументы и опции, разобрать введенные пользователем аргументы и настроить внешний вид вашего CLI приложения.

Argparse предоставляет множество возможностей для настройки и гибкой работы с аргументами командной строки. Он также позволяет создавать сложные командные интерфейсы с подкомандами и взаимоисключающими группами аргументов и опций. Надеюсь, что это руководство было полезным для вас и поможет вам создать свои собственные командные интерфейсы в Python с использованием argparse.