Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python的argparse中,metavar和action意味着什么?_Python_Action_Argparse - Fatal编程技术网

在Python的argparse中,metavar和action意味着什么?

在Python的argparse中,metavar和action意味着什么?,python,action,argparse,Python,Action,Argparse,我正在通读模块。我被困在metavar和action的意义上 >>> parser.add_argument('integers', metavar='N', type=int, nargs='+', ... help='an integer for the accumulator') >>> parser.add_argument('--sum', dest='accumulate', action='store_co

我正在通读模块。我被困在metavar和action的意义上

>>> parser.add_argument('integers', metavar='N', type=int, nargs='+',
...                     help='an integer for the accumulator')
>>> parser.add_argument('--sum', dest='accumulate', action='store_const',
...                     const=sum, default=max,
...                     help='sum the integers (default: find the max)')
我可能错过了,但从我阅读的内容中,我找不到
metavar
和的定义
操作(action=“store\u const”等)
。它们实际上是什么意思?

用于帮助消息中预期参数的位置。请参见此处的
FOO
是默认的
metavar

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.add_argument('bar')
>>> parser.parse_args('X --foo Y'.split())
Namespace(bar='X', foo='Y')
>>> parser.print_help()
usage:  [-h] [--foo FOO] bar
...

定义如何处理命令行参数:将其存储为常量、追加到列表中、存储布尔值等。有多个内置操作可用,并且可以轻松编写自定义操作。

Metavar:它为帮助消息中的可选参数提供了不同的名称。在
add_argument()
中为metavar关键字参数提供一个值

参考:

操作:参数可以触发不同的操作,由
add_argument()
的操作参数指定。遇到参数时可以触发六个内置操作:

  • 存储
    :在可选地将值转换为其他类型后保存该值。如果未明确指定,则这是默认操作

  • store\u true
    /
    store\u false
    :保存适当的布尔值

  • store_const
    :保存定义为参数规范一部分的值,而不是来自正在分析的参数的值。这通常用于实现非布尔的命令行标志

  • append
    :将值保存到列表中。如果参数重复,则会保存多个值

  • append_const
    :将参数规范中定义的值保存到列表中

  • version
    :打印程序的版本详细信息,然后退出


  • 参考资料:

    btw,这两者有什么区别
    parser.add_参数('cd_data',metavar='.dat',type=str,nargs='+')
    parser.add_参数('-cd_data',metavar='.dat',type=str,nargs='+')
    。只有一个更改是
    cd\u data
    -cd\u data
    带有
    -
    的更改是可选参数,请参阅。您能看看这篇文章并给出您的建议吗<代码>http://stackoverflow.com/questions/19126399/why-args-add-argument-works-when-given-in-two-separate-statements-but-not-one-in我想添加以下内容:
    store\u true
    表示如果指定了true,则设置参数值,否则将其保留为None。如果还指定了
    default
    ,则param将设置为该值,而不是保留为None。
    >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument('--foo', metavar='YYY')
    >>> parser.add_argument('bar', metavar='XXX')
    >>> parser.parse_args('X --foo Y'.split())
    Namespace(bar='X', foo='Y')
    >>> parser.print_help()
    usage:  [-h] [--foo YYY] XXX
    
    positional arguments:
      XXX
    
    optional arguments:
      -h, --help  show this help message and exit
      --foo YYY