Как правильно использовать субпарсеры argparse?Python

Программы на Python
Ответить
Anonymous
 Как правильно использовать субпарсеры argparse?

Сообщение Anonymous »

Я просмотрел множество примеров субпарсеров здесь и в целом, но, похоже, не смог понять эту, казалось бы, простую вещь.
У меня есть два типа var, один из которых имеет ограничения, поэтому я подумал, что субпарсер — это лучший вариант. например -t допускает либо «A», либо «B». Если пользователь передает «A», ему также необходимо указать, является ли это «a1» или «a2». Если они передают только «B», тогда ничего.
Могу ли я сделать это и заставить argparse вернуть мне, какой тип «A» был передан или просто «B»?
Приведенный ниже пример работает, но по какой-то причине не работает при передаче чего-либо после поданализа.
например. из терминала Linux
>> python test01.py -t A a1 -v 61

ошибки с...
usage: test01.py a1 [-h]
test01.py a1: error: unrecognized arguments: -v

Надеюсь, это имеет смысл.
Код:
import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='types of A')

parser.add_argument("-t",
choices = ["A", "B"],
dest = "type",
required=True,
action='store',
help="Some help blah blah")

cam_parser = subparsers.add_parser('a1', help='Default')
cam_parser.set_defaults(which='a1')

cam_parser = subparsers.add_parser('a2', help='parse this instead of default')
cam_parser.set_defaults(which='a2')

parser.add_argument("-v",
nargs = '+',
required=True,
dest = "version",
type=int,
action='store',
help="some version help blah blah")

argument = parser.parse_args()

print argument.type
print argument.version


Подробнее здесь: https://stackoverflow.com/questions/170 ... -correctly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»