我在我的脚本中使用了argparse.ArgumentParser(),我想在argparse的'--help'选项中显示脚本的pydoc描述。
一种可能的解决方案是使用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
,将文档字符串移到帮助的结尾,而不是紧随用法字符串之后。
ArgumentParser(usage=__doc__)
。 - Viktor Kerkezformatter_class=argparse.RawDescriptionHelpFormatter
以保留格式。恐怕我只是在重复他已经尝试过的东西。 - chepner有一个优雅的argparse包装器,允许在命令行界面中使用Python函数docstring作为命令帮助:dsargparse
它聪明地保留函数docstring的描述部分,而不是参数部分,这可能与您的命令无关。
如其Readme所述:
dsargparse是argparse库的一个包装器,它从docstrings准备帮助和描述。它还设置了每个子命令要运行的函数,并提供了一个帮助函数,该函数解析args并运行所选命令。使用此库,您无需在docstrings、帮助和描述中编写相同的文本。
__doc__
对我来说已经足够了。谢谢!除了使用formatter_class/description
,还有其他的方法吗? - baky