我不太了解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]
最佳答案
在nargs
的文档中直接对此进行了说明。总结:
对于nargs=N
,如果N
是整数,则将获得N
值的列表。即使N
是1
。
对于nargs='?'
,您将获得一个值(可能是默认值)。
对于完全不使用的nargs
,您将获得该操作的默认值。如果操作是例如store
,则表示单个值,而不是一个值的列表。
它甚至明确指出了令您惊讶的部分:
请注意,nargs = 1会生成一个项的列表。这与默认情况不同,在默认情况下,项目是自己生产的。
关于python - 将argparse与python一起使用时的字符串选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24965485/