2021.04.10  

【Python】argparseの使い方

Python    

argparseとは

Pythonをコマンドラインで実行させる際に、コマンドラインへ渡す引数を詳細に設定できるPythonのライブライのことです。

例を挙げると、以下に記載しているコマンドラインの引数部分 -h-i にどのような値を渡すかを設定することができます。

また、オプション引数でない引数(以下の例では text.txt)の振る舞いについても設定することができます。

python argparseTest.py -h host_001 -i 192.168.22.3 text.txt

インストール

argparse は Python 2.7 、 3.2 以降は標準ライブラリとして Python 本体に同梱されているため、パッケージのインストールは不要です。

マニュアル

こちらを参照。https://docs.python.org/ja/3.7/library/argparse.html

ソース例

記述量は多いですが、一つひとつの内容は単純です。

argparseTest.py

# 1. argparseをインポート
import argparse

# 2. argparseのインスタンスを作成。引数にはヘルプ(-h)で使用する設定を与える。
parser = argparse.ArgumentParser(
            prog='argparseTest.py',  # プログラム名
            usage='プログラムの利用方法',  # プログラムの利用方法
            description='このプログラムの引数説明',  # 引数のヘルプの前に表示
            epilog='説明おわり',  # 引数のヘルプの後で表示
            add_help=True,  # -h/–help オプションの追加
            )

# 3. 使用する引数をparser.add_argumentで設定する。
# 一度に複数の引数設定がおこなえる。
# オプション引数の使用有無、引数利用の必須化、help表示時の説明文など細かく設定できる。

# オプション引数なしで引数を指定
parser.add_argument('arg1') 
# helpオプションを設定すると、引数の説明を設定、表示できる。
parser.add_argument('arg2', help='第二引数') 
# requiredオプションをTrueにすると、引数の使用を必須条件にできる。
parser.add_argument('-a', required=True, help='第三引数') 
#「--」と「-」の引数を設定可能 
parser.add_argument('-b', '--B', help='第四引数') 
# default オプションを使用すると、コマンドラインで引数設定がなかった際の設定値を指定できる。
parser.add_argument('-c', default='default hoge!', help='第五引数')
# 引数の型指定にはtypeを使う
parser.add_argument('-d', type=int, help='第六引数') 
# 真偽値の利用 
parser.add_argument('-e', type=bool, default=True, help='第七引数')
# 可変長のリスト形式で引数を受け取る
parser.add_argument('-f', nargs='*', help='第八引数')


# 4. 引数を解析する
args = parser.parse_args()

# 5. 引数の利用
# 引数の取り出しには add_argumentで指定した引数をargs.引数の形で指定する。
# ※ add_argument で「-」「--」の引数を指定した場合、「--」の引数を指定する (第四引数の話)
print('arg1='+args.arg1)
print('arg2='+args.arg2)
print('-a='+args.a)
print('-b,--B='+args.B)
print('-c='+args.c)
print('-d='+str(100 + args.d))
print('-e='+str(args.e))
print('-f='+str(args.f))

argparseTest.pyの実行

引数パターン色々

上記で設定した引数を指定してプログラムを実行します。今回は-cと-eは指定しないで実行します。

引数名は【ソース 3. 】のadd_argument()の第一引数で自由に設定できます。

その他の引数についてはオプション引数で指定し、指定することでさまざまな設定が行えます。(設定内容の詳細については後述します)

プログラムの実行
※ 「\」はコマンドラインを改行する際に使用する記号

$ python argparseTest.py hoge.py hoge.txt -a hoge1 --B hoge2 \
-d 1 -f HOGE1 HOGE!

実行結果

arg1=hoge.py
arg2=hoge.txt
-a=hoge1
-b,--B=hoge2
-c=default hoge!
-d=101
-e=True
-f=['HOGE1', 'HOGE!']

arg1
argparseTest.pyの最初で指定した引数「hoge.py」が渡されていることが確認できます。
オプション引数なしの引数であるため、値の省略はできない。
オプション引数とは、引数の前に -a, --argなどオプションを指定してから設定する引数のことです。

arg2
argparseTest.pyの2番目で指定した引数「hoge.txt 」が渡されていることが確認できます。
helpで指定した内容については後述する「ヘルプの表示」で確認できます。
オプション引数なしの引数なので値の省略ができない。

-a
オプション引数である。引数は 「-a hoge1」の形で指定しています。
オプション引数ではあるが、required=Trueとなっているため、値の省略はできない。
required=Trueは引数の使用を必須にするオプションです。

-b, --B
オプション引数。引数は 「-b hoge1」または「--B hoge1」の形で指定します。
注意点としては、【ソース 5. 】のargs.[引数名]で指定する[引数名]は「--」で指定した方を設定しないとエラーとなるので注意。
また、オプション引数であるが、デフォルト値の設定がないため値の省略はできない。

-c
オプション引数でかつ、デフォルト値が設定されているため、引数を省略できる。
今回の例では、引数を省略しており、デフォルト値の「default hoge!」が出力されている。

-d
オプション引数。add_argument()でtypeを指定すると引数の種類を指定できる。
今回はint型を指定している。
オプション引数でかつ、デフォルト値が設定されているため、引数を省略できる。

-e
オプション引数。add_argument()のtypeでboolを指定しているため、引数はTrueかFalseのみが設定可能となる。
オプション引数でかつ、デフォルト値が設定されているため、引数を省略できる。
今回の例では引数を省略しているため、値はデフォルト値の「 True」が出力されています。

-f
オプション引数。 add_argument()でnargs='*'を設定すると。可変調リスト型の引数を受け取ることができる。
デフォルト値が設定されていないため、引数を省略できない。

ヘルプの表示

-hまたは--helpを引数に使用すると、引数の説明が表示できる。

説明内容は、【ソース 2. 】で設定した「parser = argparse.ArgumentParser()の引数」や【ソース 3. 】で設定した「add_argumentのhelp」の値が表示される。
arg1については、helpの設定を行っていないため、引数の説明が表示されていない。

プログラム実行結果

$ python argparseTest.py -h
usage: プログラムの利用方法

このプログラムの引数説明

positional arguments:
  arg1            
  arg2            第二引数

optional arguments:
  -h, --help      show this help message and exit
  -a A            第三引数
  -b B, --B B     第四引数
  -c C            第五引数
  -d D            第六引数
  -e E            第七引数
  -f [F [F ...]]  第八引数

説明おわり
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信