PEP 257によると、コマンド ライン スクリプトの docstring はその使用法メッセージである必要があります。
スクリプト (スタンドアロン プログラム) の docstring は、その "使用法" メッセージとして使用できる必要があります。このメッセージは、スクリプトが誤った引数または欠落した引数で (または "ヘルプ" の場合は "-h" オプションで) 呼び出されたときに出力されます。このような docstring は、スクリプトの関数とコマンド ライン構文、環境変数、およびファイルを文書化する必要があります。使用方法のメッセージはかなり複雑 (数画面いっぱい) で、新しいユーザーがコマンドを適切に使用するのに十分なだけでなく、上級ユーザー向けのすべてのオプションと引数の完全なクイック リファレンスでもあります。
したがって、私のdocstringは次のようになります。
<ツール名> <著作権情報> 使用法: <プログラム名> [オプション] [引数] 使用法を説明するテキスト... オプション: -h, --help このヘルプ メッセージを表示して終了します ...
次に、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 このヘルプ メッセージを表示して終了します
しかし、ここでdocstringをどのように使用できますか? 使用法メッセージとして docstring を渡すことには、2 つの問題があります。
- optparse は、"Usage: " で始まらない場合、docstring に "Usage: " を追加します。
- プレースホルダ '%prog' をドキュメント文字列で使用する必要があります
結果
回答によると、optparse モジュールが意図する docstring を再利用する方法はないようです。したがって、残りのオプションは、docstring を手動で解析し、OptionParser を構築することです。(だから私はS.Lootの答えを受け入れます)
"Usage: " の部分は IndentedHelpFormatter によって導入され、OptionParser.__init__() の formatter パラメータに置き換えることができます。