Модуль 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.