这是我的argparse样本说sample.py
import argparse parser = argparse.ArgumentParser() parser.add_argument("-p", nargs="+", help="Stuff") args = parser.parse_args() print args
Python-2.7.3
我希望用户在-p选项后提供一个由空格分隔的参数列表。例如,如果您运行
$ sample.py -p x y Namespace(p=['x', 'y'])
但是我的问题是当你跑步时
$ sample.py -p x -p y Namespace(p=['y'])
这里既不那里。我想要以下之一
我可以看到python 2.7都没有做,这让我感到困惑。我可以让python执行上面记录的两种行为之一吗?
注意:python 3.8添加了一个action="extend",它将创建所需的[‘x’,’y’]列表
action="extend"
要产生[‘x’,’y’]的列表,请使用action='append'。其实它给
action='append'
Namespace(p=[['x'], ['y']])
对于每一个,-p它都会给出一个['x']由指示的列表nargs='+',但append意味着将该值添加到命名空间已经拥有的值中。默认操作仅设置值,例如NS['p']=['x']。我建议您查看action文档中的段落。
-p
['x']
nargs='+'
append
NS['p']=['x']
action
optionals允许按设计重复使用。它启用诸如append和的动作count。通常,用户不希望重复使用它们,或者对最后一个值感到满意。 positionals(不带-flag)不能重复(除非允许nargs)。
optionals
count
positionals
-flag
nargs