我不太了解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值的列表。即使N1

对于nargs='?',您将获得一个值(可能是默认值)。

对于完全不使用的nargs,您将获得该操作的默认值。如果操作是例如store,则表示单个值,而不是一个值的列表。

它甚至明确指出了令您惊讶的部分:


  请注意,nargs = 1会生成一个项的列表。这与默认情况不同,在默认情况下,项目是自己生产的。

关于python - 将argparse与python一起使用时的字符串选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24965485/

10-15 08:44