Python: обработка аргументов из командной строки
Python предлагает несколько способов обработки аргументов, передаваемых, когда мы вызываем программу из командной строки.
До сих пор вы запускали программы либо из REPL, либо с помощью
python <filename>.py
При этом вы можете передать дополнительные аргументы и параметры, например:
python <filename>.py <argument1>
python <filename>.py <argument1> <argument2>
Базовый способ обработки этих аргументов - использовать модуль sys
из стандартной библиотеки.
Вы можете получить аргументы, переданные в списке sys.argv
:
import sys
print(len(sys.argv))
print(sys.argv)
Список sys.argv
содержит в качестве первого элемента название файла, который был вызван, например ['main.py']
.
Это простой способ, но вам придется проделать большую работу. Вам необходимо проверить аргументы, убедиться, что их тип правильный, вам нужно напечатать отзыв для пользователя, если он неправильно использует программу.
Python предоставляет еще один пакет в стандартной библиотеке, чтобы помочь вам: argparse
.
Сначала вы импортируете argparse
и вызываете argparse.ArgumentParser()
, передавая описание вашей программы:
import argparse
parser = argparse.ArgumentParser(
description='This program prints the name of my dogs'
)
Затем вы переходите к добавлению аргументов, которые хотите принять. Например, в этой программе мы принимаем опцию передачи цвета -c
, например: python program.py -c red
import argparse
parser = argparse.ArgumentParser(
description='This program prints a color HEX value'
)
parser.add_argument('-c', '--color', metavar='color', required=True, help='the color to search for')
args = parser.parse_args()
print(args.color) # 'red'
Если аргумент не указан, программа выдает ошибку:
➜ python python program.py
usage: program.py [-h] -c color
program.py: error: the following arguments are required: -c
Вы можете установить опцию, чтобы иметь определенный набор значений, используя choices
:
parser.add_argument('-c', '--color', metavar='color', required=True, choices={'red','yellow'}, help='the color to search for')
➜ python python program.py -c blue
usage: program.py [-h] -c color
program.py: error: argument -c/--color: invalid choice: 'blue' (choose from 'yellow', 'red')
Есть еще варианты, но это основы.
И есть пакеты сообщества, которые также предоставляют эту функцию, например Click и Python Prompt Toolkit.