首页 > 解决方案 > python参数解析器为列表类型输入定义变量名

问题描述

我可以选择读取用户的输入列表。该列表可以具有随机长度。这是我的代码:

parser.add_argument('-at', '--addTests', metavar=('test_commands'), nargs='+')

使用 'metavar' 是为变量命名的好方法,但是当 nargs 不固定时,它就不起作用了。

我从这一行得到的结果是:

-at test_command [test_command ...], --addTests test_command [test_command]

我希望结果只显示一次“test_command”。

标签: pythonargparse

解决方案


您对以下含义感到困惑

--addTests test_command [test_command]

你认为这意味着这[test_command]是一个参数列表。

请注意,[arg]符号用于可选参数。由于您使用了nargs='+',因此用户必须为该选项提供至少一个参数,并且任何其他参数对于.-at/--addTests--addTests

因此,使用:

--addTests test_command test_command2

调用脚本时:

args = parser.parse_args()

将给出以下解析的参数:

Namespace(addTests=['test_command', 'test_command2']

然后您可以使用以下方法访问它们:

for command in args.addTests: 
    print command

或者(而不是打印)您可以运行命令等。


推荐阅读