python参数解析器为列表类型输入定义变量名称

时间:2018-06-04 14:04:22

标签: python argparse

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

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

使用' metavar'是一个给变量赋值的好方法,但是当没有修复nargs时它不能正常工作。

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

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

我希望结果只有" test_command"显示一次。

1 个答案:

答案 0 :(得分:2)

你对

的含义感到困惑
--addTests test_command [test_command]

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

请注意,[arg]表示法用于可选参数。由于您已使用nargs='+',因此用户必须为-at/--addTests选项提供 至少 一个参数,并且{{1}的任何其他参数都是可选的}}

因此,使用:

--addTests

调用脚本时:

--addTests test_command test_command2

将提供以下解析的args:

args = parser.parse_args()

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

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

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