[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]表示
に表示内容を指定することで、エピローグ[epilog
epilog
]を表示できます。
デフォルトでは表示されません。
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 exit
RawTextHelpFormatter
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 exit
ArgumentDefaultsHelpFormatter
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
おわりに
オプションを使用すると、本格的なヘルプ表示も可能になります。
コメント