[python] pythonで引数をパースする
SHTOGUNのexe作る用に、基本的なargparseの使い方をメモ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# -*- coding: utf-8 -*- import argparse parser = argparse.ArgumentParser() # 引数をセット parser.add_argument('name',help="hello world!!") parser.add_argument('-v', '--value') # 必須パラメーターにしたい場合は、 required = Trueにする parser.add_argument('-t', required=True) # 引数複数にしたい場合 parser.add_argument('-f', '--foo', nargs=3) # 可変にする parser.add_argument('--hogehoge', nargs="*") # 必須じゃなくする場合 parser.add_argument('-o', '--options', nargs="?", default=0) # 指定のなかから選択する parser.add_argument('--type', type=int, choices=[1, 2, 3]) # 引数の格納指定 オプション指定があればTrueを入れる parser.add_argument('-y', action="store_true") # 複数オプションがあったときにいろいろする parser.add_argument('--add', action='append') # 解析結果をGET。 # 引数空の時は、sys.args を入れてるのと同じ意味。 args = parser.parse_args() # 表示するには、 .hogehoge のように、add_argumentで指定した名前にする print args.name print args.type print args.y print args.add |
あんまり使う機会が無かったので今回初めてさわりましたが、
簡単だし細かい調整も出来るので超便利ですね。
これで、 hogehoge.py –h のようにすると
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
positional arguments: name hello world!! optional arguments: -h, --help show this help message and exit -v VALUE, --value VALUE -t T -f FOO FOO FOO, --foo FOO FOO FOO --hogehoge [HOGEHOGE [HOGEHOGE ...]] -o [OPTIONS], --options [OPTIONS] --type {1,2,3} -y --add ADD |
こんな感じでHepを出すことが出来ます。
引数で help=””設定をすると、このhelpにコメントが表示されます。
パース結果は、 Namespace() クラスのオブジェクトとして帰ってきます。
使う時は、 args.xxx のように、 . + add_argumentで指定した名前 で
値を取得することができます。
他にも色々出来るらしいですが、今回やりたい事はこれぐらい出来てれば十分なので
さくさくっとSHOTGUNの値を取得するツールを書いて
Excelで遊びたいですね。
C#とPython行き来はけっこう脳みそが混乱するので、ついついpythonだよりにしたくなるのですが
それだといつまでたってもC#が成長しないので
多少無理してでもC#でツール書いて行きたいですね。