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

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

Aru

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




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

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
記事URLをコピーしました