なんか気になったのでメモ。
pickleモジュールを使うと、バイナリデータとしてデータを保存することができる。
ここまでは良い。いろんなサイトで使い方が解説されていて、便利だ。
でもこいつに関しての情報が全くと言って、存在しない。
with open("test.pickle","wb") as f:
for i in range(10):
data = {i:"<<<data%d>>>" % i}
pickle.dump(data,f)
このtest.pickleファイルには以下の情報が格納されたわけですが。
{0: '<<<data0>>>'}
{1: '<<<data1>>>'}
{2: '<<<data2>>>'}
{3: '<<<data3>>>'}
{4: '<<<data4>>>'}
{5: '<<<data5>>>'}
{6: '<<<data6>>>'}
{7: '<<<data7>>>'}
{8: '<<<data8>>>'}
{9: '<<<data9>>>'}
こいつらをload()するには、
with open("test.pickle","wb") as f:
for i in range(10):
yield pickle.load(f)
とかなんとかやってやりゃあいいんだけど、
たとえば、3番目のでーただけ欲しいぜ!って時は上から読み込まなきゃいけないのかな。
そこら辺の使い方がどうも転がっていない様子。
だれかご存知でしたら、ご教授ください。
追記
def get():
with open("test.pickle","rb") as f:
while True:
try:
yield pickle.load(f)
except:
break
data = get()
d = list(data)[3]
print(d)
{3: '<<<data3>>>'}
これで無事4番目のデータだけを取得できたけど、メモリ的にやさしい取り方なのかな?