【Python】ArgumentParserの使い方

 

今日はPythonのArgumentParserの使い方を紹介します。

 

このライブラリはコマンドライン引数を扱うためのものです。

 

コマンドライン引数と言っても、JupyterNotebookで実行できますのでそのやり方もお教えします。

 

import argparse

parser = argparse.ArgumentParser(description='機械学習を行うコード')

# parser.add_argumentで受け取る引数を追加していく
parser.add_argument('--batch_size', '-b', help='バッチサイズを指定してね') 
parser.add_argument('--epoch', '-e', help='エポックサイズを指定してね')


# ヘルプを表示する
args = parser.parse_args(args=['-h'])

 

何をしているのかというと、

`add_argument`でこのコードが取りうる引数を追加しています。

`parse_args`を使うと引数をパースすることができます。Jupyterで実行するときはこの中にargs=[‘-h’]のようにコマンドライン引数を指定します。

上の例では、-hを指定してヘルプを出力してみます。

usage: ipykernel_launcher.py [-h] [--batch_size BATCH_SIZE] [--epoch EPOCH]

機械学習を行うコード

optional arguments:
  -h, --help            show this help message and exit
  --batch_size BATCH_SIZE, -b BATCH_SIZE
                        バッチサイズを指定してね
  --epoch EPOCH, -e EPOCH
                        エポックサイズを指定してね
An exception has occurred, use %tb to see the full traceback.

SystemExit: 0

それらしいヘルプが出てきました。

 

引数をパースして表示してみます。そのまま指定する場合と省略形それぞれで試してみます。

# 引数を解析 args=[]を指定することでjupyter上でも引数の指定が可能になる
args = parser.parse_args(args=['--batch_size','200','--epoch','100']) 

print('batch_size = '+args.batch_size)
print('epoch = '+args.epoch)

# 省略系で指定する
args = parser.parse_args(args=['-b','400','-e','1100']) 

print('batch_size = '+args.batch_size)
print('epoch = '+args.epoch)

出力は以下の通り。

batch_size = 200
epoch = 100
batch_size = 400
epoch = 1100

 

おわり。