[python]コマンドライン引数を取得する方法(argparse – ヘルプ表示編)
はじめに
Pythonスクリプトにコマンドライン引数を使用する方法です。
より本格的な標準ライブラリに含まれる argparse を使用します。
argparse は様々なオプションがありますが、その中でもヘルプ表示についての機能を紹介します。
基本的な紹介や、引数設定の機能紹介についてはこちらをご参照ください。
ンがありますが、その中でもヘルプ表示についてのオプションを紹介します。
開発環境
OS : Windows 11 Pro
Python:3.13.2
使用ライブラリ:なし
説明
ヘルプ表示の基本的なオプションを取り上げてみます。
全てを取り上げると量が膨大になるため、詳細は公式ドキュメントを参照ください。
help 表示カスタマイズ
ArgumentParser オブジェクトに指定することで、help 表示をカスタマイズできます。
最後の引数説明表示(help)のみ、add_argument() メソッドに指定します。
プログラム名[prog]変更
prog にプログラム名を指定することで、usage に表示されるプログラム名[prog]が変更されます。
デフォルトでは、sys.argv[0] が格納されています。
また、ヘルプメッセージ中では %(prog)s フォーマット指定子で利用できます。
import argparse
parser = argparse.ArgumentParser(prog='プログラム名')
args = parser.parse_args()> python .\argparse_prog.py -h
usage: プログラム名 [-h]
options:
-h, --help show this help message and exit使用法表示[usage]変更
usage に表示内容を指定することで 使用法表示[usage]を変更できます。
デフォルトでは、「プログラム名+引数」が表示されます。
import argparse
parser = argparse.ArgumentParser(prog='プログラム名', usage='%(prog)s [options]')
args = parser.parse_args()> python .\argparse_usage.py -h
usage: プログラム名 [options]
options:
-h, --help show this help message and exit説明[description]表示
description に表示内容を指定することで、usage と options の間に説明[description]を表示できます。
デフォルトでは表示されません。
import argparse
parser = argparse.ArgumentParser(description='プログラム説明')
args = parser.parse_args()> python .\argparse_description.py -h
usage: argparse_description.py [-h]
プログラム説明
options:
-h, --help show this help message and exitエピローグ[epilog]表示
に表示内容を指定することで、エピローグ[epilogepilog]を表示できます。
デフォルトでは表示されません。
import argparse
parser = argparse.ArgumentParser(epilog="エピローグ")
args = parser.parse_args()> python .\argparse_epilog.py -h
usage: argparse_epilog.py [-h]
options:
-h, --help show this help message and exit
エピローグフォーマット[formatter_class]変更
フォーマットクラスを指定することで、ヘルプのフォーマットをカスタマイズすることができます。
| フォーマットクラス | 対象 | カスタマイズ内容 |
|---|---|---|
| class argparse.RawDescriptionHelpFormatter | description、epilog | 改行位置を反映させる |
| class argparse.RawTextHelpFormatter | help(引数の説明) | 改行位置を反映させる |
| class argparse.ArgumentDefaultsHelpFormatter | help(引数の説明) | デフォルト値を自動追加 |
| class argparse.MetavarTypeHelpFormatter | 引数の表示名 | dest ではなく type を表示 |
RawDescriptionHelpFormatter
説明[、description]エピローグ[の改行位置を反映させることができます。epilog]
また、コード内でインデントの文字列を綺麗にするため、textwrap.dedent を使用しています。
import argparse
import textwrap
parser = argparse.ArgumentParser(
prog='PROG',
formatter_class=argparse.RawDescriptionHelpFormatter,
description=textwrap.dedent('''\
Please do not mess up this text!
--------------------------------
I have indented it
exactly the way
I want it
'''))
args = parser.parse_args()> python .\argparse_RawDescriptionHelpFormatter.py -h
usage: PROG [-h]
Please do not mess up this text!
--------------------------------
I have indented it
exactly the way
I want it
options:
-h, --help show this help message and exit以下は、「RawDescriptionHelpFormatter」を指定していない場合の表示内容です。
1行で表示されています。
> python .\argparse_RawDescriptionHelpFormatter.py -h
usage: PROG [-h]
Please do not mess up this text! -------------------------------- I have indented it exactly the way I want it
options:
-h, --help show this help message and exitRawTextHelpFormatter
help (引数の説明)の改行位置を反映させることができます。
また、コード内でインデントの文字列を綺麗にするため、textwrap.dedent を使用しています。
import argparse
import textwrap
parser = argparse.ArgumentParser(
prog='PROG',
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('bar',
help=textwrap.dedent('''\
Please do not mess up this text!
--------------------------------
I have indented it
exactly the way
I want it
'''))
args = parser.parse_args()> python .\argparse_RawTextHelpFormatter.py -h
usage: PROG [-h] bar
positional arguments:
bar Please do not mess up this text!
--------------------------------
I have indented it
exactly the way
I want it
options:
-h, --help show this help message and exit以下は、「RawTextHelpFormatter」を指定していない場合の表示内容です。
1行で表示されています。
> python .\argparse_RawTextHelpFormatter.py -h
usage: PROG [-h] bar
positional arguments:
bar Please do not mess up this text! -------------------------------- I have indented it exactly the way I want it
options:
-h, --help show this help message and exitArgumentDefaultsHelpFormatter
help(引数の説明)にデフォルト値を自動で表示させます。
import argparse
parser = argparse.ArgumentParser(
prog='PROG',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--foo', type=int, default=42, help='FOO!')
parser.add_argument('bar', nargs='*', default=[1, 2, 3], help='BAR!')
args = parser.parse_args()> python .\argparse_ArgumentDefaultsHelpFormatter.py -h
usage: PROG [-h] [--foo FOO] [bar ...]
positional arguments:
bar BAR! (default: [1, 2, 3])
options:
-h, --help show this help message and exit
--foo FOO FOO! (default: 42)MetavarTypeHelpFormatter
各引数の表示名に type 引数の値を使用します (通常は dest の値が使用されます)
import argparse
parser = argparse.ArgumentParser(
prog='PROG',
formatter_class=argparse.MetavarTypeHelpFormatter)
parser.add_argument('--foo', type=int)
parser.add_argument('bar', type=float)
args = parser.parse_args()> python .\argparse_MetavarTypeHelpFormatter.py -h
usage: PROG [-h] [--foo int] float
positional arguments:
float
options:
-h, --help show this help message and exit
--foo int引数説明表示(help)
ヘルプ表示する時に、引数の説明を表示することができます。
プログラム名 %(prog)s と、 %(default)s や %(type)s などのフォーマット指定子を含めることができます。
import argparse
parser = argparse.ArgumentParser(prog='frobble')
parser.add_argument('bar', nargs='?', type=int, default=42,
help='the bar to %(prog)s (default: %(default)s)')
args = parser.parse_args()
print(f'move={args.move}')> python .\argparse_help.py --help
usage: frobble [-h] [bar]
positional arguments:
bar the bar to frobble (default: 42)
options:
-h, --help show this help message and exitおわりに
オプションを使用すると、本格的なヘルプ表示も可能になります。





コメント