Я пытаюсь создать команду, какКак argparse с nargs + и подкомандами
prog [-h] [-i ID [ID ...]] | -x [SOMETHING]
{cmd1,cmd2,cmd3}...
Так в основном на верхнем уровне у меня есть синтаксический анализатор, который имеет взаимную EXLUSIVE группу для -i и -x , а затем следуя этим (и, возможно, другим) параметрам, у меня есть команда, которую я хочу запустить. Каждая команда имеет свой собственный набор опций, которые они используют. Я могу заставить команды работать нормально с add_subparsers()
, но проблема, с которой я сталкиваюсь, - это когда я пытаюсь добавить аргумент в корневой парсер с nargs='+'
. Когда я это делаю, он перекрывает все аргументы для -i
, полагая, что команда является аргументом, а не идентификатором.
Есть ли способ обойти это? Похоже, что ему придется просмотреть аргументы в -i
, ища командное слово, а затем сообщить argparse
, что он должен возобновить разбор в этой точке.
Вы можете показать нам [mcve]/ваш код, если он не слишком большой? –
Checkout [Click] (http://click.pocoo.org/5/) для создания CLI с помощью python и сохранения головной боли. – garnertb
@garnertb +1. Можете подтвердить, что 'click' отлично и отлично справляется с подкомандами. – Tagc