私的AI研究会 > Python基礎1
「argparse」はプログラム実行時にコマンドラインで引数を受け取る処理を簡単に実装できる標準ライブラリ。
ArgumentParser (argparse)を使うと様々な形式で引数を指定することができる。
$ python program.py test.txt --alpha 0.01
プログラムの冒頭に次のような処理を実行する。
test.py # 1. argparseをインポート import argparse # 2. パーサを作る parser = argparse.ArgumentParser(description='プログラムの説明(省略可') # 3. parser.add_argumentで受け取る引数を追加していく parser.add_argument('arg1', help='この引数の説明(省略可') # 必須の引数を追加 parser.add_argument('arg2', help='foooo') parser.add_argument('--arg3') # オプション引数(指定しなくても良い引数)を追加 parser.add_argument('-a', '--arg4') # よく使う引数なら省略形があると使う時に便利 # 4. 引数を解析 args = parser.parse_args() print('arg1='+args.arg1) print('arg2='+args.arg2) print('arg3='+args.arg3) print('arg4='+args.arg4)
$ python test.py input.txt output.txt --arg3 11111 -a 22222 arg1=input.txt arg2=output.txt arg3=11111 arg4=22222
usage: test.py [-h] [--arg3 ARG3] [-a ARG4] arg1 arg2 このプログラムの説明(省略可) positional arguments: arg1 この引数の説明(省略可) arg2 foooo optional arguments: -h, --help show this help message and exit --arg3 ARG3 -a ARG4, --arg4 ARG4
parser.add_argument('-i', '--input')
parser.add_argument('-i', '--input') args = parser.parse_args() print(args.input) # OK print(args.i) # エラー
parser.add_argument('--message', default='hello!')
parser.add_argument('--number', type=int) # 整数値(int) parser.add_argument('--alpha', type=float, default=0.01) # 実数値(float)このようにすると,指定された値はintやfloatに自動で変換される。
tp = lambda x:list(map(int, x.split('.'))) parser.add_argument('--address', type=tp, help='IP address') args = parser.parse_args() print(args.address)実行例
$ python test.py --address 192.168.31.150 [192, 168, 31, 150]
parser.add_argument('--flag', action='store_true') args = parser.parse_args() print(args.flag)実行例
$ python test.py False $ python test.py --flag True実行時に --flag が指定されていると True そうでないときは False になる。
parser.add_argument('--colors', nargs='*') args = parser.parse_args() print(args.colors)実行例
$ python test.py --colors red green blue ['red', 'green', 'blue']
parser.add_argument("-a", required=True) args = parser.parse_args() print(args.a)実行例
$ python test.py -a hoge hoge $ python test.py usage: test.py [-h] -a A test.py: error: argument -a is required