将pydoc的描述显示为argparse' - help'的一部分。

时间:2013-08-07 14:38:39

标签: python argparse pydoc

我在我的脚本中使用 argparse.ArgumentParser(),我想将我的脚本的pydoc描述显示为argparse的' - help'选项的一部分。

一种可能的解决方案是使用ArgumentParser的 formatter_class description 属性来配置帮助的显示。但在这种情况下,我们需要在内部使用'pydoc'命令来获取描述。

我们还有其他方法(可能是优雅的)吗?

2 个答案:

答案 0 :(得分:26)

您可以从__doc__全局检索脚本的docstring。要将其添加到脚本的帮助中,可以设置解析器的description参数。

"""My python script

Script to process a file
"""

p = argparse.ArgumentParser(description=__doc__,
                            formatter_class=argparse.RawDescriptionHelpFormatter)
p.add_argument('foo', help="Name of file to process")
p.parse_args()

然后帮助将如下:

$ python tmp.py --help
usage: tmp.py [-h] foo

My python script

Script to process a file

positional arguments:
  foo         Name of file to process

optional arguments:
  -h, --help  show this help message and exit

您可以使用epilog关键字参数而不是description将文档字符串移动到帮助的末尾,而不是紧跟使用字符串。

答案 1 :(得分:0)

有一个优雅的argparse包装器,可以在命令行界面中使用Python函数docstring作为命令帮助:dsargparse

它巧妙地保留了函数docstring的描述部分,而不保留可能与命令无关的参数部分。

如其Readme中所述:

dsargparse是argparse库的包装,该库从文档字符串准备帮助和描述。它还设置了要为每个子命令运行的函数,并提供了一个辅助函数,该函数可以解析args并运行选定的命令。 使用此库,您无需在文档字符串,帮助和描述中编写相同的文本。