【发布时间】:2010-11-18 14:25:16
【问题描述】:
根据PEP 257,命令行脚本的docstring应该是它的使用信息。
脚本的文档字符串(a 独立程序)应该可用 作为它的“使用”消息,打印时 脚本调用不正确 或缺少论据(或可能与 “-h”选项,用于“帮助”)。这样一个 docstring 应该记录脚本的 函数和命令行语法, 环境变量和文件。 使用信息可以相当详细 (几个屏幕已满),应该是 足以让新用户使用 命令正确,以及 完整的快速参考 选项和参数 成熟的用户。
所以我的文档字符串看起来像这样:
用法:现在我想使用 optparse 模块。 optparse 生成“选项”部分和解释命令行语法的“用法”:
from optparse import OptionParser
if __name__ == "__main__":
parser = OptionParser()
(options, args) = parser.parse_args()
所以调用带有“-h”标志的脚本会打印:
用法:script.py [选项] 选项: -h, --help 显示此帮助信息并退出这可以修改如下:
parser = OptionParser(usage="Usage: %prog [options] [args]",
description="some text explaining the usage...")
导致
用法:script.py [选项] [参数] 一些解释用法的文字... 选项: -h, --help 显示此帮助信息并退出但是我怎样才能在这里使用文档字符串呢?将文档字符串作为使用消息传递有两个问题。
- optparse 如果文档字符串不以“Usage:”开头,则将“Usage:”附加到文档字符串中
- 必须在文档字符串中使用占位符“%prog”
结果
根据答案,似乎没有办法重用 optparse 模块预期的文档字符串。所以剩下的选择是手动解析文档字符串并构造OptionParser。 (所以我会接受 S.Loot 的回答)
“Usage:”部分由 IndentedHelpFormatter 引入,可替换为 OptionParser.__init__() 中的 formatter 参数。
【问题讨论】: