LoginSignup
3
3

More than 5 years have passed since last update.

python optparse の結果を dict に変換して活用する

Posted at

optparse の基本

Python の非常に便利なモジュールである optparse ですが、
parse_args で得られる options があまり使い勝手が良くない
と感じるのです。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import optparse
parser = optparse.OptionParser()
# option '-i' を追加
parser.add_option('-o', '--output', type='str',
                  help='output filename')

# コマンドライン引数をパース
options, args = parser.parse_args()
print(type(options))

例に上げるのはただ単に出力ファイル名を -o もしくは --output
オプションで指定できるようにした OptionParser ですが、
この返り値 options って辞書でも何でもなく、<type 'instance'>
という型のオブジェクトが返ってくるわけです。
オプションの値にアクセスする場合は options.output といったように
Attribute にアクセスする形となります。
これ、dict に変更できたら、関数のキーワード引数の位置にそのまま投げれるのにと。

dict 化

というわけでさくっとやってしまいます。
得に難しいことはせず。以下のように一旦文字列にして組み込み関数の eval
Python として解釈してしまえば、dict に変換できてしまいます。

options = eval(str(options))

キーワード引数として

こうなってしまえば、他の関数などにパラメータを渡す場合も楽ですね。

def hogehoge(foo, fuga, **kwargs):
    output = kwargs.get('output', sys.stdout)

hogehoge(foo, fuga, **options)

こんな感じでキーワード付き引数のように使えます。
実装しているアルゴリズムに新しくパラメータを追加する必要が
出来たときなど、地味に役にたつ一工夫ですた。

3
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3