Если вы используете mode
, чтобы попытаться выбрать подпарсер, вам не нужно это делать.Это часть того, что add_parser()
делает для вас.
myparser = argparse.ArgumentParser(prog='test')
# myparser.add_argument('mode', choices=['A', 'B']) # Don't think you need this
subparsers = myparser.add_subparsers()
a_parser = subparsers.add_parser('A')
b_parser = subparsers.add_parser('B')
a_parser.add_argument('frog',action='store')
b_parser.add_argument('toad',action='store')
args = myparser.parse_args(['A', 'frogname'])
print(args)
>>> Namespace(frog='frogname')
Если режим является чем-то отдельным, что вы хотите установить в дополнение к выбору подпаратера, вам нужно передать этот аргумент отдельно
myparser = argparse.ArgumentParser(prog='test')
myparser.add_argument('mode', choices=['A', 'B'])
subparsers = myparser.add_subparsers()
a_parser = subparsers.add_parser('A')
b_parser = subparsers.add_parser('B')
a_parser.add_argument('frog',action='store')
b_parser.add_argument('toad',action='store')
args = myparser.parse_args(['A', 'A', 'frogname'])
print(args)
>>> Namespace(frog='frogname', mode='A')