95

我正在阅读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_const',
...                     const=sum, default=max,
...                     help='sum the integers (default: find the max)')

我可能错过了,但从我阅读的内容来看,我找不到metavarand 的定义action (action="store_const", etc)。它们实际上是什么意思?

4

2 回答 2

61

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

>>> 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

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

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

  1. store: 保存该值,可选择将其转换为不同的类型。如果没有明确指定,这是默认操作。

  2. store_true/ store_false:保存适当的布尔值。

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

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

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

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

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

于 2017-04-27T14:00:47.667 回答
51

metavar用于帮助消息中的预期参数的位置。SeeFOO是这里的默认设置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
...

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

于 2013-10-01T19:36:37.903 回答