pickleモジュール(オブジェクトの文字列化)

データをまとめてファイルに記録しておいて、後でその値を更新したり、必要ならば削除する必要がある。
この場合、データ構造は辞書で扱うことにすれば便利なのでそうしようとしたが、ファイルに書き込むとき悩んでしまった。
文字列にしないと書き込めないじゃん、ということでstrで文字列に変換して書き込むと、読み込むときに文字列の形を読み込むので、それを辞書へ変換するのがかなり面倒になる。辞書で扱うからこういう面倒なことになるのかと、他のデータ構造も検討してみた(xmlとかyamlとか)。
どれもこれもちょっと面倒だな、と思ったときにpickleモジュールを発見した。半年前ぐらいに確か使ったな、と思い出す。どんなオブジェクトでも文字列に変換して、簡単にその文字列からオブジェクトを再構築してくれる。
洋書の「Learning Python 3rd Edition」でいろいろ探していたので発見に時間がかかった。未熟だ。

import pickle

adict = dict()
adict['1'] = ["a", "b"]
adict['2'] = ["c", "d"]

fp = open('DATA', 'w')
pickle.dump(adict, fp)  # 書き込み
fp.close()

fp = open('DATA', 'r')
x = pickle.load(fp)     # 読み込み
fp.close()
print x, type(x)

結果、

{'5': ['a', 'b'], '6': ['c', 'd']} <type 'dict'>

すばらしい。

Learning Python

Learning Python