Python argparse subparsers: сделать команды cli

Категория: Python · Язык: Python · Обновлено:

argparse subparsers позволяют собрать CLI с отдельными командами и параметрами, например tool build и tool deploy. Каждый subparser проверяет свои аргументы и передаёт управление выбранной функции.

Рабочий пример

Python
import argparse
parser135 = argparse.ArgumentParser()
commands135 = parser135.add_subparsers(dest="command", required=True)
build135 = commands135.add_parser("build")
build135.add_argument("--release", action="store_true")
args135 = parser135.parse_args(["build", "--release"])
print(args135.command, args135.release)  # build True

Установите dest, чтобы прочитать имя подкоманды, и required=True, чтобы вызвать help при запуске без команды. Функции обработчиков можно хранить в defaults каждого parser.

Частый вопрос

Как связать subparser с отдельной функцией?

Добавьте parser.set_defaults(func=handler), затем после parse_args вызовите args.func(args). Так условная логика не разрастается в одну цепочку if.