引数の解析を処理するためにpythonのargparseを使用しています。次のような構造のデフォルトのヘルプメッセージが表示されます。
usage: ProgramName [-h] ...
Description
positional arguments:
...
optional arguments:
-h, --help show this help message and exit
...
私が欲しいのは、このメッセージに新しいセクション全体を追加することです。たとえば、
usage: ProgramName [-h] ...
Description
positional arguments:
...
optional arguments:
-h, --help show this help message and exit
...
additional information:
This will show additional information relevant to the user.
....
この動作を実現する方法はありますか? python 2.7と3.xの両方でサポートされているソリューションが推奨されます。
編集:ヘルプメッセージの下部に新しいセクションを追加する解決策も用意します。
epilog を使用して、それを完全に行うことができます。以下に例を示します。
import argparse
import textwrap
parser = argparse.ArgumentParser(
prog='ProgramName',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog=textwrap.dedent('''\
additional information:
I have indented it
exactly the way
I want it
'''))
parser.add_argument('--foo', nargs='?', help='foo help')
parser.add_argument('bar', nargs='+', help='bar help')
parser.print_help()
結果:
usage: ProgramName [-h] [--foo [FOO]] bar [bar ...]
positional arguments:
bar bar help
optional arguments:
-h, --help show this help message and exit
--foo [FOO] foo help
additional information:
I have indented it
exactly the way
I want it
コマンドに 説明を追加 する方法はいくつかあります。推奨される方法は、次のようにソースコードファイルの先頭にモジュールドキュメントを追加することです。
""" This is the description, it will be accessible within the variable
__doc__
"""
その後:
parser = argparse.ArgumentParser(description=__doc__)
パラメータの説明の下にテキストを追加するには、次のドキュメントの例に示すように、epilogを使用します。
>>> parser = argparse.ArgumentParser(description='A foo that bars',
epilog="And that's how you'd foo a bar")
>>> parser.print_help()
usage: argparse.py [-h]
A foo that bars
optional arguments: -h, --help show this help message and exit
And that's how you'd foo a bar
詳細については、上記のリンクのドキュメントを参照してください。