Аргументы командной строки и создание CLI-инструментов
Превратите скрипт в настоящий инструмент, читающий параметры из командной строки с помощью argparse
argparse берёт этот сырой список слов, сверяет его с объявленными вами аргументами, преобразует каждое значение к нужному типу, бесплатно формирует экран справки и возвращает аккуратный объект с настройками. Вы описываете, что принимает инструмент; argparse делает разбор, проверку и вывод ошибок за вас.
- читать сырые аргументы из
sys.argvи понимать, почему этого мало, - объявлять позиционные аргументы и необязательные флаги через
add_argument, - задавать значения
default, преобразовывать черезtypeи ограничивать черезchoices, - добавлять переключатели вкл/выкл через
action="store_true", - писать хороший текст
helpи читать автоматический экран использования, - разбивать большой инструмент на подкоманды, такие как
addиlist.
1. Сырьё: sys.argv
Когда вы запускаете python greet.py Alice --loud, Python передаёт вашей программе следующие за ней слова в виде списка строк sys.argv. Первый элемент — всегда имя скрипта; остальное — то, что ввёл пользователь.
import sys
# запуск: python greet.py Alice --loud
print(sys.argv)
# ['greet.py', 'Alice', '--loud']
Можно разбирать этот список вручную, но вы быстро придёте к хрупкому коду: проверка длины, поиск --loud, преобразование "3" в int, вывод справки и понятные ошибки при опечатках. Каждому серьёзному инструменту нужна одна и та же обвязка, поэтому стандартная библиотека даёт её в виде argparse.
Обратите внимание: всё в sys.argv — это строки, даже "3". Преобразование и проверку этих строк как раз и берёт на себя argparse.