引数をパースするargparse
Pythonならリストの操作が手軽なので、sys.argvを直接参照してもそこそこのことは出来るのですが、argparseパッケージを使うと、さらに高度なオプション指定を受け付けるプログラムを手軽に書くことができます。
Macにはデフォルトで入っているようですが、CentOSの場合、追加パッケージのインストールが必要です。
# yum install python-argparse
サンプルとして以下のようなプログラムを書いてみました。
ap.py
import argparse
parser = argparse.ArgumentParser(
description='This is a description')
parser.add_argument('cmd',type=str,help='This is a help for "cmd"')
parser.add_argument('-f',action='store_true',
help='This is a help of "f"')
parser.add_argument('-b',help='This is a help of "b"')
args = parser.parse_args()
print args
まずは、何も引数を付けずに実行します。cmd引数は必須なため、parse_argsが実行された時点でエラーメッセージ(と簡単な説明)を出力して終了します。
$ ./ap.py
usage: ap.py [-h] [-f] [-b B] cmd
sync.py: error: too few arguments
次に、「-h」オプションを付けて実行します。このオプションはArgumentParserがデフォルトで持っているもので、上記よりもさらに詳しい説明を出力します。
$ ./ap.py -h
usage: ap.py [-h] [-f] [-b B] cmd
This is a description
positional arguments:
cmd This is a help for "cmd"
optional arguments:
-h, --help show this help message and exit
-f This is a help of "f"
-b B This is a help of "b"
最後に、オプションを全て指定して実行します。引数に指定された値が解析されてオブジェクトに格納されていることが確認できるかと思います。あとはこれを利用して処理を実装するだけですね!簡単便利!
$ ./ap.py test -f -b b
Namespace(b='b', cmd='test', f=True)
参考URL
この記事は役に立ちましたか?
- EnglishWorm.com
- SinglesFan.com
- LmLab.net
- サイトマップ
- 運営者について