【发布时间】:2012-08-13 12:37:09
【问题描述】:
我在 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 文档中没有关于此限制的内容。
提前感谢您的帮助
【问题讨论】:
-
python版本....是重要的东西要检查....
-
不是你问的,但是如果
action是'store_true',默认值已经是False(如果action是'store_false',默认值是True)。这很方便,虽然与optparse不同(在这两种情况下默认为None)。