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'>
すばらしい。
- 作者: Mark Lutz
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2009/10/02
- メディア: ペーパーバック
- 購入: 1人 クリック: 7回
- この商品を含むブログ (3件) を見る