Модуль 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"
, который не является допустимым значением, и получилось сообщение об ошибке с вариантами выбора.