Модуль Python argparse
— это мощный инструмент для разбора аргументов командной строки в сценариях Python. Это позволяет вам легко указать аргументы, которые должен принимать ваш сценарий, их типы и любую дополнительную информацию, такую как справочные сообщения и значения по умолчанию.
Использование argparse
может сделать ваши сценарии более удобными и простыми в использовании, поскольку он обеспечивает согласованный интерфейс для указания аргументов и доступа к ним. Он также позволяет указывать необязательные аргументы, а также взаимоисключающие аргументы, что может быть полезно для сложных сценариев.
Чтобы использовать argparse
, вам сначала нужно импортировать его в свой скрипт Python:
import argparse
Затем вам нужно создать объект ArgumentParser
, который будет содержать всю информацию об аргументах, которые должен принимать ваш скрипт. Вы можете сделать это, вызвав конструктор argparse.ArgumentParser
:
parser = argparse.ArgumentParser()
Затем вы можете использовать метод add_argument
объекта ArgumentParser
, чтобы указать аргументы, которые должен принимать ваш скрипт. Например, чтобы указать обязательный строковый аргумент с именем filename
, вы можете сделать следующее:
parser.add_argument('filename', type=str, help='The file to process')
Вы также можете указать необязательные аргументы, используя аргумент '-h'
или '--help'
. Например:
parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS, help='Show this help message and exit')
После того, как вы указали все аргументы, которые должен принимать ваш сценарий, вы можете использовать метод parse_args
для разбора аргументов командной строки:
args = parser.parse_args()
Объект args
будет содержать все аргументы, переданные вашему сценарию, с их значениями. Вы можете получить доступ к значениям аргументов, используя имена атрибутов, указанные при их добавлении. Например, если вы добавили аргумент с именем filename
, вы можете получить доступ к его значению, используя args.filename
.
Вот пример полного сценария, который использует argparse
для разбора аргументов командной строки:
import argparse parser = argparse.ArgumentParser() parser.add_argument('filename', type=str, help='The file to process') parser.add_argument('-o', '--output', type=str, help='The output file') parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output') args = parser.parse_args() print('Filename:', args.filename) print('Output:', args.output) print('Verbose:', args.verbose)
Чтобы запустить этот сценарий, вы должны передать обязательный аргумент filename
и любые необязательные аргументы, которые вы хотите указать. Например:
python my_script.py input.txt -o output.txt -v
Это будет анализировать аргумент filename
как input.txt
, аргумент output
как output.txt
и аргумент verbose
как True
.
В дополнение к основным аргументам, описанным выше, argparse
также поддерживает более сложные функции, такие как взаимоисключающие аргументы и подкоманды.
Взаимоисключающие аргументы — это аргументы, которые нельзя использовать вместе. Например, у вас может быть сценарий, который принимает либо аргумент input
, либо аргумент output
, но не оба одновременно. Чтобы указать взаимоисключающие аргументы в argparse
, вы можете использовать метод add_mutually_exclusive_group
:
group = parser.add_mutually_exclusive_group() group.add_argument('-i', '--input', type=str, help='The input file') group.add_argument('-o', '--output', type=str, help='The output file')
В этом примере аргументы input
и output
являются взаимоисключающими, поэтому пользователь может указать только один из них. Если пользователь попытается указать оба, argparse
вызовет ошибку.
Подкоманды — это способ указать различные режимы или действия для вашего скрипта. Например, у вас может быть сценарий, который выполняет разные задачи в зависимости от указанной подкоманды. Чтобы указать подкоманды в argparse
, вы можете использовать метод add_subparsers
:
subparsers = parser.add_subparsers() parser_a = subparsers.add_parser('task1', help='Perform task 1') parser_a.add_argument('-i', '--input', type=str, help='The input file for task 1') parser_b = subparsers.add_parser('task2', help='Perform task 2') parser_b.add_argument('-o', '--output', type=str, help='The output file for task 2')
В этом примере скрипт имеет две подкоманды: task1
и task2
. Каждая подкоманда имеет свой собственный набор аргументов. Чтобы указать подкоманду, пользователь должен передать ее в качестве первого аргумента скрипту, за которым следуют аргументы для этой подкоманды. Например:
python my_script.py task1 -i input.txt python my_script.py task2 -o output.txt
argparse
также поддерживает многие другие расширенные функции, такие как сокращения аргументов, группы аргументов и настраиваемые действия. Подробнее об этих функциях можно прочитать в документации к модулю argparse
.