Модуль argparse в языке Python предоставляет инструменты для создания интерфейса командной строки. Он позволяет определить аргументы командной строки, их типы, значения по умолчанию, а также проводить парсинг и обработку этих аргументов.
argparse.ArgumentParser(): создает парсер аргументов командной строки.parser.add_argument(): добавляет аргумент в парсер.parser.parse_args(): выполняет парсинг аргументов командной строки и возвращает объект, содержащий значения аргументов.arg.name: доступ к значению аргумента name.argparse.Action: базовый класс для создания пользовательских действий при парсинге аргументов.argparse.FileType: возвращает объект файла для аргумента, который является именем файла.argparse.RawDescriptionHelpFormatter: форматтер для вывода справки, который сохраняет отступы и переносы строк.argparse.ArgumentDefaultsHelpFormatter: форматтер для вывода справки, который добавляет значения по умолчанию аргументов.argparse.ArgumentParser.add_argument_group(): создает группу аргументов.argparse.Namespace: пространство имен, содержащее атрибуты со значениями аргументов.argparse.REMAINDER: константа, используемая для захвата оставшихся аргументов.argparse.ArgumentParser.print_help(): выводит справку по использованию аргументов.argparse.ArgumentParser.error(): выводит сообщение об ошибке при парсинге аргументов.Пример использования модуля argparse:
import argparse
# Создание парсера аргументов
parser = argparse.ArgumentParser(description='Пример использования argparse')
# Добавление аргументов
parser.add_argument('-f', '--file', help='Имя файла', required=True)
parser.add_argument('-n', '--count', type=int, help='Количество', default=1)
# Парсинг аргументов
args = parser.parse_args()
# Доступ к значениям аргументов
filename = args.file
count = args.count
# Дальнейшая обработка аргументов...
Когда вам нужно обработать несколько значений для одного аргумента командной строки, вы можете использовать параметр nargs в методе add_argument модуля argparse.
Аргумент
определяет, сколько аргументов должно быть принято для данного аргумента командной строки.
nargs
Примеры возможных значений nargs:
nargs="3" означает, что должно быть принято ровно три аргумента."?": Означает, что аргумент является необязательным и может быть указан или не указан. Если указан, то будет принят один аргумент."*": Означает, что аргумент может принять любое количество аргументов (в том числе и ноль)."+": Означает, что аргумент должен принять одно или более аргументов.Пример кода, демонстрирующий использование аргументов nargs:
import argparse
# Создание парсера аргументов
parser = argparse.ArgumentParser(description='Пример использования аргументов nargs')
# Добавление аргумента с nargs='+' для получения списка значений
parser.add_argument('files', nargs='+', help='Список файлов')
# Парсинг аргументов
args = parser.parse_args()
# Доступ к значению аргумента files (список файлов)
file_list = args.files
# Дальнейшая обработка списка файлов...
В этом примере мы добавляем аргумент files с параметром nargs='+', что означает, что этот аргумент ожидает получить одно или несколько значений из командной строки. Аргументы будут сохранены в виде списка значений.
После парсинга аргументов вы можете получить доступ к списку значений аргумента files, обратившись к атрибуту args.files. В примере мы сохраняем список файлов в переменной file_list для дальнейшей обработки.
Теперь вы можете передать несколько файлов через командную строку при запуске программы, например:
python script.py file1.txt file2.txt file3.txt
В результате аргумент files будет содержать список ['file1.txt', 'file2.txt', 'file3.txt'], и вы можете выполнять дополнительную логику обработки списка файлов в программе.
Параметр action в модуле argparse позволяет определить, как должны быть обработаны аргументы командной строки при парсинге. В зависимости от значения action, аргумент может иметь различное поведение. Вот некоторые из возможных значений для параметра action:
store (по умолчанию): Аргумент сохраняется в атрибуте с именем, указанным в dest.store_const: Аргумент сохраняется в атрибуте с именем, указанным в dest, но используется предварительно определенное значение, указанное в const.store_true/store_false: Аргумент принимает значение True или False, соответственно.append: Аргументы с одним и тем же именем будут сохраняться в список.count: Считает количество вхождений аргумента, не требуя значения.Вот пример кода, демонстрирующий использование параметра action:
import argparse
# Создание парсера аргументов
parser = argparse.ArgumentParser(description='Пример использования аргумента action')
# Добавление аргумента с action='store_const' для сохранения предварительно определенного значения
parser.add_argument('--verbose', action='store_const', const=True, default=False, help='Включить подробный вывод')
# Добавление аргумента с action='append' для сохранения нескольких значений в список
parser.add_argument('--file', action='append', help='Указать файл для обработки')
# Добавление аргумента с action='count' для подсчета вхождений аргумента
parser.add_argument('--debug', action='count', default=0, help='Включить отладочный режим')
# Парсинг аргументов
args = parser.parse_args()
# Доступ к значениям аргументов
verbose_mode = args.verbose
file_list = args.file
debug_level = args.debug
# Дальнейшая обработка аргументов...
print(verbose_mode, file_list, debug_level)
python cmd.py --file name1.txt --file name2.txt --verbose --debug --debug
В этом примере мы добавляем несколько аргументов с разными значениями action. Аргумент --verbose использует action='store_const', что означает, что если этот аргумент указан в командной строке, то в атрибут verbose_mode будет сохранено значение True.
Аргумент --file использует action='append', что позволяет указывать этот аргумент несколько раз и сохранять все значения в список file_list. Например, --file file1.txt --file file2.txt приведет к тому, что file_list будет содержать ['file1.txt', 'file2.txt'].
Аргумент --debug использует action='count', что позволяет считать количество вхождений этого аргумента. Каждый раз, когда аргумент указывается, значение debug_level будет увеличиваться на 1. Например, --debug --debug приведет к тому, что debug_level будет равно 2.
Значения action позволяют настраивать поведение аргументов командной строки и гибко обрабатывать различные сценарии в вашей программе.
Использование аргумента type:
import argparse
# Создаем парсер аргументов
parser = argparse.ArgumentParser()
# Добавляем аргумент с типом int
parser.add_argument("--number", type=int, help="Enter a number")
# Разбираем аргументы командной строки
args = parser.parse_args()
# Получаем значение аргумента и выводим его
number = args.number
print("The number entered is:", number)
В приведенном коде мы создаем объект парсера argparse.ArgumentParser и добавляем аргумент --number с аргументом type=int. Это означает, что значение, переданное для аргумента --number, будет преобразовано в целое число перед тем, как будет доступно в переменной args.number.
После разбора аргументов командной строки, мы получаем значение args.number и выводим его на экран.
Пример использования:
python script.py --number 42
The number entered is: 42
Использование аргумента choices:
import argparse
# Создаем парсер аргументов
parser = argparse.ArgumentParser()
# Добавляем аргумент с выбором из заданных вариантов
parser.add_argument("--color", choices=["red", "green", "blue"], help="Choose a color")
# Разбираем аргументы командной строки
args = parser.parse_args()
# Получаем значение аргумента и выводим его
color = args.color
print("The chosen color is:", color)
В приведенном коде мы создаем объект парсера argparse.ArgumentParser и добавляем аргумент --color с аргументом choices=["red", "green", "blue"]. Это означает, что пользователь должен выбрать одно из заданных значений: "red", "green" или "blue". Если пользователь введет значение, не входящее в список выбора, будет выдано сообщение об ошибке.
После разбора аргументов командной строки мы получаем значение args.color и выводим его на экран.
Пример использования:
$ python script.py --color green
The chosen color is: green
$ python script.py --color yellow
usage: script.py [-h] [--color {red,green,blue}]
script.py: error: argument --color: invalid choice: 'yellow' (choose from 'red', 'green', 'blue')
Во втором примере пользователь попытался выбрать цвет "yellow", который не является допустимым значением, и получилось сообщение об ошибке с вариантами выбора.