argparse について
pythonでコマンドラインから何かしらの引数を受け取る時って多くの場合はsys.argv[1]とかやると思うんですが、これをもっとキレイな形で書くためのライブラリが実はpythonには組み込まれています.
それがargparseと呼ばれるライブラリで、実に色々な設定を行うことができるようになっています.
導入
まずはサイトにある例を眺めてみます。
import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)') args = parser.parse_args() print(args.accumulate(args.integers))
これをprog.py
として保存し、 -h とつけて呼び出してみます.
$ python prog.py -h usage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers (default: find the max)
かなり情報量が多く、しっかりしているように見えますね!
argparse.ArgumentParser(description='Process some integers.')
の部分で引数のパーサを定義し、さらに -h をつけて呼び出したときの説明文の情報を与えられます。
parser.add_argument()
とすることで具体的に引数を定義できます。引数を指定するときには様々な情報を加えて引数を指定できます。
例えば、一つ目の
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
では,
- 最初の 'integers' で実際に格納される変数名を指定
- metavar='N' で -h としたとき表示される文字を指定
- type=int で引数として渡された文字列を変換したい型に変換する関数を指定
- nargs='+' で引数の個数を指定
- help=''sum the integers (default: find the max)'で-hとしたときのメッセージを指定
としています.
そして、parser.parse_args()
で受け取った引数をパースします.
ドキュメントを見ると、おびただしい数のオプションがあります...いくつかを紹介します
epilog
エピローグみたいな感じだと思いますが、 -h としたとき最後に表示する文字列を指定できます.
>>> parser = argparse.ArgumentParser( ... description='A foo that bars', ... epilog="And that's how you'd foo a bar") >>> parser.print_help() usage: argparse.py [-h] A foo that bars optional arguments: -h, --help show this help message and exit And that's how you'd foo a bar
add_argument() メソッド
nargs
const
default
type
dest
などなどがかなり使えそうな感じです。(気が向いたら更新します)