这是我的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']列表
要生成['x','y']的列表,请使用action='append'
。其实它给
Namespace(p=[['x'], ['y']])
对于每个,-p
它都会给出一个['x']
由指示的列表nargs='+'
,但append
意味着将该值添加到命名空间已具有的值中。默认操作仅设置值,例如NS['p']=['x']
。我建议您查看action
文档中的段落。
optionals
允许通过设计重复使用。它启用诸如append
和的动作count
。通常,用户不希望重复使用它们,或者对最后一个值感到满意。positionals
(不带-flag
)不能重复(除非允许nargs
)。
如何添加可选或一次性参数?对如何创建“不重复”参数提出了一些建议。一种是创建自定义action
类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句