OptionParserメモ

Python 使ってコマンドラインからゴニョゴニョしようと思って、 調べてみたら OptionParser なんてものがあったので試してみたメモ。

6.21 optparse -- より強力なコマンドラインオプション解析器 を見ながらhoge.pyとかにして試してみる。

#!/usr/bin/env python
# vim: encoding=utf=8

from optparse import OptionParser

parser = OptionParser()

def main():
    options, args = parser.parse_args()
    print options
    print args

if __name__ == '__main__':
    main()

これだけでヘルプの表示までは出来るようになってるらしい。 -h--help でヘルプが表示出来るらしく、 実際にやってみるとこんな感じになったよ。

$ ./hoge.py -h
Usage: hoge.py [options]

Options:
  -h, --help  show this help message and exit

ここからオプションを add_option なメソッドを使って、 必要なオプションを詰め込んでいけば良いらしい。 リファレンス見ながらやってみる。

parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metabar="FILE")
parser.add_option("-q", "--quiet", action="store_false",
                  dest="verbose", default=True,
                  help="don't print status messages to stdout")

これでもう1回ヘルプを表示してみると、

$ ./hoge.py -h
Usage: hoge.py [options]

Options:
  -h, --help            show this help message and exit
  -f FILE, --file=FILE  write report to FILE
  -q, --quiet           don't print status messages to stdout

ちゃんと増えてるよ。 ここまで簡単に出来ると、 今までシェルで書いてたのがバカらしくなってくるなぁ。

実際に適当に実行してみて、 どんなふうに値が取れるのか見てみると、 キーワード指定したものはoptionsに、普通に指定したものはargsに入ってくるみたい。

$ ./hoge.py -f hoge.txt
{'verbose': True, 'filename': 'hoge.txt'}
[]

$ ./hoge.py -f hige.txt -q
{'verbose': False, 'filename': 'hige.txt'}
[]

$ ./hoge.py hoge -f hige.txt -q
{'verbose': False, 'filename': 'hige.txt'}
['hoge']

add_option の引数のキーワードの種類とか説明は、 リファレンスを見るのが一番良いって覚えておく。

Posted at: 
2008/03/09 00:26:16
0 Comments
1 TrackBack
Tags: 
CUI
Python
Trackback: 
http://humming.via-kitchen.com/2008/03/09/optionparser-memo/trackback/

TrackBacks

[Python][Mercurial]巡回 - 常山日記

Python Developers Camp 2008 Winter: 早くも二日目の夜 Python Developers Camp 2008 Winter に参加中。その2 Blog: OptionParserメモ [開発環境] 今更ながら、Mercurial を使ってみる hgpushsvn.py --collapse でコミットメッセージを指定したい [mercurial]とても詳しい

Created at: 
2008/03/09 01:32:40

Comments

まだ登録されていません。

Add Comment

Add Comment