我有以下测试代码:
import argparse
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')
print(myparser)
try:
args = myparser.parse_args(['A', 'frogname'])
print(args)
except ArgumentError as ae:
print(ae)
当我运行它时,我得到以下信息:
ArgumentParser(prog='test', usage=None, description=None, formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)
usage: test [-h] {A,B} {A,B} ...
test: error: invalid choice: 'frogname' (choose from 'A', 'B')
我不知道为什么我得到多个'mode'参数的副本,或者为什么我的子参数被忽略
如果您使用
mode
来尝试选择子parser,则不需要这样做。这是add_parser()
为你做的一部分如果mode是除了选择子parser之外还需要设置的独立的东西,那么需要单独传递该参数
相关问题 更多 >
编程相关推荐