247:オブジェクトをファイルに保存する
pickle モジュールを使用します。
ファイルに保存する
dump メソッドを使用します。ファイルはバイナリモードでオープンするようにしてください。
>>> import pickle
>>> s = 'Hello World'
>>> fobj = open('pickle_data', 'wb', pickle.HIGHEST_PROTOCOL)
>>> pickle.dump(s, fobj)
>>> fobj.close()
pickel のプロトコルは複数のバージョン存在し、第 3 引数で指定することができます。最新バージョンは pickle.HIGHEST_PROTOCOL で確認できます(CPython 2.5.2 では 2 でした)。省略すると最も古い 0 が使用されます。
ファイルから読み出す
load メソッドを用います。
>>> fobj = open('pickle_data', 'rb')
>>> ss = pickle.load(fobj)
>>> ss
'Hello World'
>>> fobj.close()
ファイルではなく文字列に変換する
loads, dumps を用います。文字列になるので、これをデータベースに保持したりすることができるようになります。
>>> import pickle >>> s = 'Hello World' >>> p = pickle.dumps(s, pickle.HIGHEST_PROTOCOL) >>> p '\x80\x02U\x0bHello Worldq\x00.' >>> pickle.loads(p) 'Hello World'
他の方法としては、 StringIO? を使用するというものがあります。 dump, load は実際のファイルオブジェクトでなくても受け付けるのです。
>>> from StringIO import StringIO >>> s = 'Hello World' >>> sio = StringIO() >>> pickle.dump(s, sio, pickle.HIGHEST_PROTOCOL) >>> sio.seek(0) >>> pickle.load(sio) 'Hello World'
より詳しい情報はライブラリリファレンスの pickle を参照してください。