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

You can set an option to have a specific set of values, using 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')

There are more options, but those are the basics.

And there are community packages that provide this functionality, too, like Click and Python Prompt Toolkit.


More python tutorials: