- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 Python 中使用 argparse 模块来解析在命令行界面中键入的参数。我有以下对子解析器对象的 add_argument 调用:
submit_parser.add_argument('-pv','--provision',metavar='PROVISION', dest='PROVISION',
help='provision system',
action='store_true', default=False, required=False)
我收到这个错误:
Traceback (most recent call last):
File "./scripts/tp4", line 94, in <module>
main()
File "./scripts/tp4", line 74, in main
modloader.loadModules(sub_parsers)
File "/usr/lib/python2.6/site-packages/tp4/cli/Moduleloader.py", line 66, in loadModules
registered_modules[module_name].setSubparserArgs(module_sub_parser)
File "/usr/lib/python2.6/site-packages/tp4/cli/modules/AutotestModule.py", line 135, in setSubparserArgs
action='store_true', default=False, required=False)
File "/usr/share/tp4/cli/zip/argparse.zip/argparse.py", line 1302, in add_argument
TypeError: __init__() got an unexpected keyword argument 'metavar'
如果我删除 action 或 metavar 参数,它会起作用。为什么两个人不能在一起?在 http://docs.python.org/dev/library/argparse.html 的 argparse 文档中没有关于此限制的内容。 .
在此先感谢您的帮助
最佳答案
metavar 只对位置参数有意义(想想命令行末尾的文件名)或者当一个参数接受它自己的参数时(比如 --input-files foo.txt bar.txt
).
您的 --provision
参数是一个标志,因为您将 action
设置为 store_true
。它不接受任何参数(即 nargs
未设置)。因此,拥有元变量没有意义。
来自 the argparse
documentation :
When
ArgumentParser
generates help messages, it need some way to refer to each expected argument. By default,ArgumentParser
objects use the dest value as the “name” of each object. By default, for positional argument actions, the dest value is used directly, and for optional argument actions, the dest value is uppercased. So, a single positional argument withdest='bar'
will be referred to as bar. A single optional argument--foo
that should be followed by a single command-line argument will be referred to as FOO.
关于Python 参数解析 : metavar and action=store_true together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11999416/
这个问题在这里已经有了答案: Option accepted with and without value (2 个答案) 关闭 10 年前。 我需要识别参数是单独给出还是与可选字符串一起给出,或者
我将 argparse 用于 cli 参数。我想要一个参数 -t,来执行温度测试。我还想指定温度测量的时间段。 我要: python myscript.py -t 每 60 秒执行一次测量, pyth
我在 Python 中使用 argparse 模块来解析在命令行界面中键入的参数。我有以下对子解析器对象的 add_argument 调用: submit_parser.add_argument('-
我正在运行 Python 3.6.8::Anaconda 自定义(64 位)并从 argparse 得到奇怪的结果。尽管有 -x,trainandexecute=False 的值 def get_pa
我是一名优秀的程序员,十分优秀!