プログラミング
記事内に商品プロモーションを含む場合があります

Pythonでコマンドライン引数を取得する方法|argparseチートシート

tadanori

この記事では、Pythonのargparse.ArgumentParserの使い方について解説します。argparaseは、コマンドラインの引数を解析して受け取るための標準ライブラリです。このライブライを使うことで引数のチェックや、ヘルプも簡単につけることができます。

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の使い方をざっと説明しました。自作のツールにコマンドライン引数を追加するのにかなり便利です。




メールアドレスが公開されることはありません。 が付いている欄は必須項目です

記事URLをコピーしました