我在脚本中使用argparse.ArgumentParser(),我想将脚本的 pydoc 描述显示为 argparse 的“--help”选项的一部分。
一种可能的解决方案是使用 ArgumentParser 的formatter_class
或description
属性来配置帮助的显示。但在这种情况下,我们需要在内部使用“pydoc”命令来获取描述。
我们还有其他方法(可能很优雅)吗?
__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
将文档字符串移动到帮助的末尾,而不是紧跟在用法字符串之后。
有一个优雅的 argparse 包装器,允许在命令行界面中使用 Python 函数 docstring 作为命令帮助:dsargparse
它巧妙地仅保留函数文档字符串的描述部分,而不是与您的命令无关的参数部分。
正如其自述文件中所述:
dsargparse 是 argparse 库的包装器,它从文档字符串中准备帮助和描述。它还为每个子命令设置要运行的函数,并提供一个帮助函数来解析 args 并运行选定的命令。使用这个库,您不需要在文档字符串、帮助和描述中编写相同的文本。