別記事で、コマンドライン引数を受け取る方法は書いたが、
ツールを作っていて、必要な時だけ指定するオプション引数が欲しくなり調べたら、方法が別っぽかったので、そのメモ。
オプション引数を受け取る
引数の設定
argparseモジュールのArgumentParserを使用する。
ArgumentParserを生成し、そこに、作りたい引数の設定を行っていく。
引数の追加
引数の追加は、ArgumentParserのadd_argument
関数で行う。
add_argument
関数に渡す引数は、以下の感じ(ここに書いた以外にもいくつかある)
- 第1~n引数
引数名を指定する。複数指定可能。
ここに指定する名前に、プレフィックスとして-
を付けると、オプション引数となる。
-
で始まらない引数名だった場合、位置引数1となる。
-
type
引数の型の指定。 -
default
デフォルト値の指定。
オプション引数が、実行時に指定されなかったときにこの値が使用される。 -
help
-h
オプションで、help表示した際に表示される説明文。
以下のような感じで設定する。
option_parser.py
from argparse import ArgumentParser
def get_option(batch, epoch):
argparser = ArgumentParser()
argparser.add_argument('-b', '--batch', type=int,
default=batch,
help='Specify size of batch')
argparser.add_argument('-e', '--epoch', type=int,
default=epoch,
help='Specify number of epoch')
argparser.add_argument('-dlc', '--drawLearningCurve', type=bool,
default=False,
help='Whether to draw learning curve after learning')
argparser.add_argument('-po', '--predictOnly', type=bool,
default=False,
help='Only execute predict.')
return argparser.parse_args()
引数の使用
上記で設定した引数は、ArgumentParserのプロパティ2として、アクセスできる。
以下のソースは、上記のオプション引数設定関数get_option
をコールして、ArgumentParserを受け取っている。
main.py
if __name__ == '__main__':
args = get_option(BATCH_SIZE, EPOCHS)
print('batch : ' + str(args.batch))
print('epoch : ' + str(args.epoch))
print('drawLearningCurve : ' + str(args.drawLearningCurve))
print('predictOnly : ' + str(args.predictOnly))
~ 省略 ~