【Python】便利な引数管理「argparse」の基本的なソースコード(int,float,str,bool)
はじめに
最近仕事でPythonを使って簡単なツールを作ることが増えてきました。
これまでほとんどC++しか使っていなかった私にとって、
Pythonはとてつもなく扱いやすくて、楽で、早く開発できる最強のソースコードとなっています。
とはいえ、Pythonのすべての関数を覚えられるわけもなく、
何度も使い方を調べなおすということもしばしば...
なので、覚えられるように私なりにまとめます。
まずは、これは素晴らしいと私が唸った引数操作「argparse」の基本的な使い方についてまとめます。
実装方法
使い方は、「argparse」をインポートして設定したい引数をつらつら書いていくだけです。
引数に対して様々な細かい操作ができるようですが、
一般的に使う場合は以下のソース程度でよいのではないでしょうか。
# -*- coding:utf-8 -*- import argparse parser = argparse.ArgumentParser("Argument Util") parser.add_argument("--integer", "-i", type=int, default=0 ,help="Argument:Integer") parser.add_argument("--float", "-f", type=float, default=0.0, help="Argument:Float") parser.add_argument("--string", "-s", type=str, default="default", help="Argument:String") # 引数に「--bool_true」または「-bt」を加えるとargs.bool_trueがTrueになる parser.add_argument("--bool_true", "-bt", action='store_true', help="Argument:Bool True") # 引数に「--bool_false」または「-bf」を加えるとargs.bool_falseがFalseになる parser.add_argument("--bool_false", "-bf", action='store_false', help="Argument:Bool False") args = parser.parse_args() print "Argument:Integer -> %d"%args.integer print "Argument:Float -> %f"%args.float print "Argument:String -> %s"%args.string print "Argument:Bool True -> %s"%args.bool_true print "Argument:Bool False -> %s"%args.bool_false
上のソースでは、
int,float,str,boolを引数で受け取り、表示するという単純な処理です。
見ての通り、
「add_argument」で引数を追加していけばいいだけです。
実行結果
実際に実行した結果が以下になります。
今回は、引数がない場合と引数を付けた場合の結果を載せています。
引数なし
~\python\util>python argument_util.py Argument:Integer -> 0 Argument:Float -> 0.000000 Argument:String -> default Argument:Bool True -> False Argument:Bool False -> True
引数あり
~\python\util>python argument_util.py -i 100 -f 0.5 -s test -bt -bf Argument:Integer -> 100 Argument:Float -> 0.500000 Argument:String -> test Argument:Bool True -> True Argument:Bool False -> False
さらに
上の例では引数を指定していなくても処理は実行されます。
しかし、時には必ず引数を指定する必要がある場合があります。
そんなときには、
「add_argument」に「required=True」を追加します。
parser.add_argument("--integer", "-i", type=int, default=0, required=True, help="Argument:Integer")
上のように設定し、引数なしで実行した場合、
以下のようにエラーを出力してくれます。
しかもusageも自動で出力してくれます!(すばらしい!)
~\python\util>python argument_util.py usage: Argument Util [-h] --integer INTEGER [--float FLOAT] [--string STRING] [--bool_true] [--bool_false] Argument Util: error: argument --integer/-i is required