我不太了解argparse的以下行为
parser.add_argument("-option1", type=int, nargs='?', const=1, default=1, choices=xrange(1, 20), help="help message of option1")
parser.add_argument("-option2", type=str, nargs=1, help="help message of option2")
在option1的情况下,args.option1是一个整数,当提供时。 在option2的情况下,args.option2看起来像一个字符串数组。如果我想获得用option2传递的实际字符串
,我必须使用args.option2 [0]答案 0 :(得分:1)
直接在nargs
的文档中对此进行了解释。总结:
对于nargs=N
,如果N
是整数,则会获得N
值的列表。即使N
是1
。
对于nargs='?'
,您会得到一个值(可能是默认值)。
对于nargs
完全停止,您将获得该操作的默认值。如果操作是,例如store
,则表示单个值,而不是一个值的列表。
它甚至明确地指出了让你感到惊讶的部分:
请注意,nargs = 1会生成一个项目的列表。这与默认情况不同,在默认情况下,项目由其自身生成。