Python 如何迭代所有可选参数和相关值?

Python 如何迭代所有可选参数和相关值?,python,for-loop,arguments,command-line-arguments,argparse,Python,For Loop,Arguments,Command Line Arguments,Argparse,我是Python新手,我想实现一个script.py,以便处理以下命令 python script.py --opt value1 --opt value2 --opt value3 ... --opt valueN 要打印所有--opt值,如下所示: value1 value2 value3 ... valueN 我怎样才能做到 我的剧本是: parser = argparse.ArgumentParser() parser.add_argument("--opt", help="opt

我是Python新手,我想实现一个
script.py
,以便处理以下命令

python script.py --opt value1 --opt value2 --opt value3 ... --opt valueN
要打印所有
--opt
值,如下所示:

value1
value2
value3
...
valueN
我怎样才能做到


我的剧本是:

parser = argparse.ArgumentParser()
parser.add_argument("--opt", help="option description")
args = parser.parse_args()

for arg_opt in args.opt:
    print(arg_opt)
我尝试使用
for
循环来迭代
--opt
值,但没有成功:运行上述代码将只输出最后一个
--opt
值。

将参数设置为
append

“append”-存储一个列表,并将每个参数值附加到 列表这对于允许多个选项指定非常有用 时代

演示:


如果在同一个脚本中,我想处理这两种情况,
pythonscript.py--opt value1--opt value2--opt value3--opt valueN(您回答正确)和带有
python script.py--opt value1 value2 value3。。。值
?也就是说,在最后一种情况下,我希望用一个或多个
--opt
支持多个值。有可能吗?@Backo指定
nargs='*'
在这种情况下应该会有所帮助。
nargs='*'
几乎满足了我的要求,但它会生成“嵌套”数组:当我运行
python script.py时--opt value1 value2--opt value3--opt valueN
然后它会输出
['value1',value2'],['value3'],['valueN']
。据我所知,如果您想支持这两种情况,那么它应该是
['value1','value2','value3','valueN']
@Backo-well,您需要处理嵌套输出。只需将列表展平即可。
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--opt", action='append')

args = parser.parse_args()
print(args.opt)
$ python test_argparse.py --opt value1 --opt value2 --opt value3
['value1', 'value2', 'value3']