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
    • 指定の関数を呼び出す。


参考: