python - python参数解析器为列表类型输入定义变量名
问题描述
我可以选择读取用户的输入列表。该列表可以具有随机长度。这是我的代码:
parser.add_argument('-at', '--addTests', metavar=('test_commands'), nargs='+')
使用 'metavar' 是为变量命名的好方法,但是当 nargs 不固定时,它就不起作用了。
我从这一行得到的结果是:
-at test_command [test_command ...], --addTests test_command [test_command]
我希望结果只显示一次“test_command”。
解决方案
您对以下含义感到困惑
--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
或者(而不是打印)您可以运行命令等。
推荐阅读
- transformer - 语言建模中的transformer是否需要位置编码?
- python - 如何将for循环中的每个打印逐行存储到文件中?
- java - 保存网站活动的更好选择
- javascript - 按另一个对象数组的属性按整数过滤数组
- c - 遍历列表时出现分段错误
- pandas - 基于多个条件的分割总数
- oracle - DBMS_OUTPUT 缓冲区大小(客户端或数据库端)
- angular - Angular 8 和 .NET Core 类型“可观察”
' 不可分配给类型 'Observable ' - bash - 设置配置文件时,Maven 退出 bash 运行,并且构建失败
- constructor - 将派生类的匿名对象传递给 Eiffel 中的例程