LoginSignup
42
32

More than 5 years have passed since last update.

Pythonでオプション引数を受け取る

Posted at

別記事で、コマンドライン引数を受け取る方法は書いたが、
ツールを作っていて、必要な時だけ指定するオプション引数が欲しくなり調べたら、方法が別っぽかったので、そのメモ。

オプション引数を受け取る

引数の設定

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))

    ~ 省略 ~

引数の指定

こんな感じ
option_args.PNG

引数のヘルプ

こんな感じ
help.PNG


  1. 要するに、通常の引数となり、addした順番に、実行時の引数の前から順に結びついて認識される。 

  2. この言葉があってるかわからない... 

42
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
32