7

使用 Python 的argparse模块时,您可以使用parse_known_args()它仅解析解析器已知的参数,并且单独返回任何其他参数。

然而,这个事实并没有在用法/帮助字符串中表示。当然我可以把它放在description解析器的领域,但我想知道是否有一种很好的方法可以将它包含在使用行中。

我正在寻找的是例如的输出usage: test [-h] ...而不是usage: test [-h]

4

2 回答 2

3

我认为您可以结合format_usage()和 ArgumentParser 属性来做到这一点usage。请注意,该部分将用法显示为构造函数的关键字参数,但是,检查源代码表明usage您可以在构造后访问它作为parser.usage.

我想你的最终解决方案看起来像:

parser = argparse.ArgumentParser()
# Add arguments...
usage = parser.format_usage()
parser.usage = usage.rstrip() + ' ...\n'
于 2012-07-26T22:45:17.400 回答
3

parse_known_args()是为了方便程序员编写程序,不是程序用户需要操心的事情。如果您正确定义命令行参数,argparse则会自动为您提供类似的东西:

>>> import argparse
>>> p = argparse.ArgumentParser(prog='command')
>>> x=p.add_argument("foo", nargs=argparse.REMAINDER)
>>> p.parse_args(["--help"])
usage: command [-h] ...

positional arguments:
  foo

optional arguments:
  -h, --help  show this help message and exit
于 2012-07-27T01:02:39.743 回答