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

eag*_*arn 50 python action argparse

我正在阅读argparse模块.因为metavar和行动意味着什么,我陷入了困境

>>> 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)')
Run Code Online (Sandbox Code Playgroud)

我可能错过了,但从我读到的,我找不到metavar和的 定义action (action="store_const", etc).他们究竟是什么意思?

小智 24

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

例如:

>>> 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
Run Code Online (Sandbox Code Playgroud)

参考 - http://www.usatlas.bnl.gov/~caballer/files/argparse/add_argument.html

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

(1)存储 - 在可选地将其转换为其他类型后保存该值.如果未明确指定,则采用默认操作.

(2)store_true/store_false - 保存适当的布尔值.

(3)store_const - 保存定义为参数规范一部分的值,而不是来自正在解析的参数的值.这通常用于实现不是布尔值的命令行标志.

(4)追加 - 将值保存到列表中.如果重复参数,则保存多个值.

(5)append_const - 将参数规范中定义的值保存到列表中.

(6)version - 打印有关程序的版本详细信息,然后退出.

参考 - http://bioportal.weizmann.ac.il/course/python/PyMOTW/PyMOTW/docs/argparse/index.html

  • 我要补充一点:`store_true` 表示如果指定了 true,则设置参数值,否则将其保留为 None。如果还指定了 `default`,则将 param 设置为该值,而不是将其保留为 None。 (6认同)

ale*_*cxe 22

metavar用于预期参数位置的帮助消息中.看到这里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
...
Run Code Online (Sandbox Code Playgroud)

action定义了如何处理命令行参数:将其存储为常量,附加到列表中,存储布尔值等.有几个可用的内置操作,而且编写自定义操作很容易.

  • 带有 `-` 的是一个可选参数,请参阅 [docs](http://docs.python.org/dev/library/argparse.html#name-or-flags)。 (2认同)