在Python的argparse模块中,metavar和action是什么意思?

115

我正在阅读 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)')

我可能错过了,但是在我阅读的内容中,我没有找到metavaraction(action="store_const"等)的定义。它们实际上是什么意思?

2个回答

79

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

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

Action:参数可以触发不同的动作,通过add_argument()中的action参数指定。当遇到参数时,有六种内置的动作可以触发:

  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


8
我想补充一下:store_true 的意思是,如果指定了 True,则设置参数值,否则将其保留为 None。如果还指定了 default,则将参数设置为该值,而不是将其保留为 None - Shital Shah
  1. help: 打印帮助信息并退出。
- Blundell

57

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

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


1
顺便问一下,这两者之间有什么区别?parser.add_argument('cd_data', metavar='.dat', type = str, nargs='+')parser.add_argument('-cd_data', metavar='.dat', type = str, nargs='+')。只有一处更改,即将cd_data更改为-cd_data - eagertoLearn
2
带有“-”的是可选参数,请参阅文档 - alecxe
你能否看一下这篇文章并给出你的建议?https://dev59.com/C3fZa4cB1Zd3GeqPSH6y - eagertoLearn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接