23

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

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

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

4

2 回答 2

36

__doc__您可以从全局检索脚本的文档字符串。要将其添加到脚本的帮助中,您可以设置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将文档字符串移动到帮助的末尾,而不是紧跟在用法字符串之后。

于 2013-08-07T15:31:54.417 回答
0

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

它巧妙地仅保留函数文档字符串的描述部分,而不是与您的命令无关的参数部分。

正如其自述文件中所述:

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

于 2020-01-18T23:44:56.913 回答