DevGang
Авторизоваться

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.

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

В подарок 100$ на счет при регистрации

Получить