Python argparse:metavar 和 action=store_true 一起

2024-01-03

我在 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'

如果我删除操作或元变量参数,它就会起作用。为什么两个人不能在一起呢? argparse 文档中没有任何关于此限制的内容:http://docs.python.org/dev/library/argparse.html http://docs.python.org/dev/library/argparse.html.

预先感谢您的任何帮助


元变量仅对位置参数(认为命令行末尾的文件名)或当参数采用自己的参数时才有意义(例如--input-files foo.txt bar.txt).

Your --provision参数是一个标志,因为您设置了action to store_true。它不需要任何参数(即nargs未设置)。因此,拥有元变量是没有意义的。

From the argparse文档 http://docs.python.org/dev/library/argparse.html#metavar:

When ArgumentParser生成帮助消息,它需要某种方式来引用每个预期的参数。默认情况下,ArgumentParser对象使用目标值作为每个对象的“名称”。默认情况下,对于位置参数操作,直接使用 dest 值,对于可选参数操作,dest 值是大写的。因此,单个位置参数dest='bar'将被称为酒吧。单个可选参数--foo后面应该跟一个命令行参数的命令将被称为 FOO。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python argparse:metavar 和 action=store_true 一起 的相关文章

随机推荐