Я искал выделение примеров подпарамера здесь и вообще, но, похоже, не могу представить эту простую вещь.
У меня есть два типа 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