Python|argparseでコマンドライン引数を取得する方法(チートシート形式)
この記事では、Pythonの標準ライブラリ「argparse.ArgumentParser」の使い方を詳しく解説します。argparse
は、コマンドライン引数の解析を簡単に行うためのライブラリで、引数を用いたパラメータの受け渡しを簡潔な記述で行うことを可能とします。本記事では、argparseの使い方を網羅的に解説し、チートシート(簡易ガイド)的な使い方ができるようにしました。
ArgumentParser(argparse)とは
argparseは、Pytonの標準ライブライの一部で、コマンドラインの解析を行うものです。かなり使いやすいので良く利用していますが、使い方を忘れがちなので記事にまとめました。
この記事ではチートシートみたいな感じで、コードメインでの解説になります。
テンプレート(サンプル)
とりあえずのサンプルです。これをコピペすればとりあえず引数を受け取るテンプレートになります。
import argparse
# パーサーを作成
parser = argparse.ArgumentParser()
# オプションを指定
parser.add_argument("--path", type=str, required = True)
parser.add_argument("-l", "--limit", type=int, default=100)
parser.add_argument("files", nargs='+')
# 解析
args = parser.parse_args()
# 入力値を表示
print(args.path)
print(args.limit)
print(args.files)
実行すると以下のようになります。pathには”./”が、limitには10が、filesにはhoge.txtとhogehoget.txtが格納されていることがわかります。
実行結果
> python3 test.py --path ./ hoge.txt hogehoge.txt --limit 10
./
10
['hoge.txt', 'hogehoge.txt']
argparseの基本的な使い方
argparaseは、ArgumentParser
でパーサーを作成し、add_argument
で引数を定義したあと、parse_args
を呼び出すことで引数を取り込みます。
インポート(必須)
import argparse
パーサーの作成(必須)
parser = argparse.ArgumentParser()
パースと引数の取り出し
解析した引数は、args.xxx(xxxは引数名)でアクセスできます。
args = parser.parse_args()
print(args)
位置引数
必須となる引数で、add_argument
した順番にパースされます。例えば、
hoge.py a b
と引数を指定した場合は、aが1番目に定義した引数名に、bが2つ目に指定した引数として格納されます。
int型の値を受け取る(位置引数)
int型で受け取る場合は、type=int
を指定します
parser.add_argument('argInt', type=int)
float型の値を受け取る(位置引数)
float型で受け取る場合は、type=float
を指定します
parser.add_argument('argFloat', type=float)
str型(文字列)の値を受け取る(位置引数)
string型で受け取る場合は、type=
strを指定します
parser.add_argument('argStr', type=str)
キーワード引数(オプション引数)の設定
オプション引数は、設定してもしなくても良い引数です。設定されない場合のデフォルト値は任意に指定できます(設定の仕方は後半にあります)。
int型の値を受け取る(オプション引数)
int型で受け取る場合は、type=int
を指定します
parser.add_argument("--int", type=int)
float型の値を受け取る(オプション引数)
float型で受け取る場合は、type=float
を指定します
parser.add_argument("--float", type=float)
str型(文字列)の値を受け取る(オプション引数)
string型で受け取る場合は、type=
strを指定します
parser.add_argument("--str", type=str)
複数の値から選択(オプション引数)
複数の選択肢のどれかを指定する引数の場合は、choices
を利用します
parser.add_argument('--sel', choices=['a', 'b', 'c'])
フラグとしてTrue/Falseを返す(オプション引数)
複数の選択肢のどれかを指定する引数の場合は、action='store_true'
を指定します。
parser.add_argument('--flag', action='store_true')
action='store_false'
も指定できます。store_falseの場合は、オプションが指定されるとFalseが設定されます
その他
デフォルト値(オプション引数)を設定する
デフォルト値の設定にはdefault
で設定します。
parser.add_argument("--int", type=int, default = 100)
必須の引数に設定する
オプション引数を必須にしたい場合は、required=True
を指定します。
parser.add_argument("--int", type=int, required=True)
複数の値を受け取る(個数が決まっている場合)
複数のパラメータを受け取りたい場合は、nargs=数
で指定します。
parser.add_argument('argStr', type=str, nargs=3)
複数の値を受け取る(任意個数)
任意個数のパラメータを受け取りたい場合は、nargs="+"
で指定します。
parser.add_argument('argStr', type=str, nargs="+")
例えば、複数のファイルを指定できるようにする場合などに利用します。
説明をつける
help
で、引数の説明をつけることができます。ここでつけた説明は、--help
オプションで表示されます。
parser.add_argument('argInt', type=int, help="integer")
パーサー作成時のオプション
パサー作成時に、以下のオプションを指定することができます。指定することで、ヘルプの説明がよりわかりやすくなります。
parser = argparse.ArgumentParser(
prog='プログラム名',
description='説明',
epilog='ヘルプの最後につけ加える文字列')
実行例
usage: プログラム名 [-h] --int INT [--float FLOAT] [--str STR] [--sel {a,b,c}] [--flag] [--int2 INT2] argInt argFloat argStr [argStr ...]
説明
positional arguments:
argInt integer
argFloat
argStr
optional arguments:
-h, --help show this help message and exit
--int INT
--float FLOAT
--str STR
--sel {a,b,c}
--flag
--int2 INT2
ヘルプの最後につけ加える文字列
まとめ
argparseの使い方をざっと説明しました。自作のツールにコマンドライン引数を追加するのにかなり便利です。