optparse
コマンドライン引数の解析にはgetoptでなく、optparseを使おう。ということで、まとめ。
C:\temp>type opt.py import optparse parser = optparse.OptionParser(usage='%prog foo bar', version='%prog 1.0') parser.parse_args() C:\temp>python opt.py --version opt.py 1.0 C:\temp>python opt.py -h Usage: opt.py foo bar Options: --version show program's version number and exit -h, --help show this help message and exit
これで準備OK。あとは、解析したいオプション引数をparser.parse_args()を呼び出す前にparser.add_option()で追加していく。
C:\temp>type opt.py import optparse parser = optparse.OptionParser(usage="%prog foo bar", version="%prog 1.0") parser.add_option('-l', '--langage', dest='language', default='Python', help='set the language') parser.add_option('-n', action='store', type='int', dest='num', default=1, help='set the initial number') opts, args = parser.parse_args() print opts print args C:\temp>python opt.py -h Usage: opt.py foo bar Options: --version show program's version number and exit -h, --help show this help message and exit -l LANGUAGE, --langage=LANGUAGE set the language -n NUM set the initial number C:\temp>python opt.py foo bar {'num': 1, 'language': 'Python'} ['foo', 'bar']
引数の値は、destで指定した文字列でopts.languageのようにアクセスできる。また、parser.print_help()でヘルプが表示できる。また、optsは辞書ではなく独自のオブジェクトなのでopts.keys()などは使用できない。
parser.add_option()の引数に短いオプション文字列と長いオプション文字列を指定できる。どちらか一方は必須。actionキーワード引数でアクションを指定できる。アクションは以下のものを指定できる。
- store
- デフォルト値。次の引数 (あるいは現在の引数の残りの部分) を取り出し、正しい型の値か確かめ、指定した保存先に保存する。
- store_true, store_false
- 特定のオプションに対して真または偽の値の値を設定する。
- store_const
- 定数値を保存する。
- append
- オプションの引数を指定のリストに追加する。
- count
- 指定のカウンタを 1 増やす。
- callback
- 指定の関数を呼び出す。
参考:
- Pythonライブラリリファレンス: 2 Tutorial (http://www.m-takagi.org/docs/python/lib/optparse-tutorial.html)