YAMLもどき in Python

YAMLって便利ですよね。でも実は、Pythonには言語仕様レベルで、同等の機能がある。

config.py:

PREFIX='>>'
DELIMITER='----'

class ACCOUNT:
    id = 'username'
    pwd = 'password'

    class DETAIL:
        name = 'J.Luser'
        email = 'jluser@foobar.com'

main.py:

import config
...
pref = config.PREFIX
delim = config.DELIMITER
...
login(config.ACCOUNT.id, config.ACCOUNT.pwd)
print "email is %s"%(config.ACCOUNT.DETAIL.email)
...

ほらね?(笑)

動的に読み込むなら、

ctx = {}
exec 'import config' in ctx
config = ctx['config']
print "PREFIX is '%s'"%(config.PREFIX)

リロードだってできる。

reload(config)

ネタですよ、いちおう。実用的かどうかは、よくわからない。意外と使えそうな気もする。

# 書き出しはできないな。でもそういう使い方したことないし、いいや。

ネタついでに書いておくと、ファイル以外の任意の入力(文字列とか、ストリームとか)でも、exec ってやる方向で、なんとかなります。


マジメにやりたい人はこちら → PyYAML http://www.pyyaml.org/wiki/PyYAML

# 「ぴゃむる」って読みたくなる。