当前位置 : 主页 > 编程语言 > python >

如何在python中使用pickle追加?

来源:互联网 收集:自由互联 发布时间:2021-06-25
我需要附加到一个pickle文件(因为我没有一个人的整个字典).所以为了做同样的事情,我写了以下代码: import pickle p={} p[1]=2 q={} q['a']=p p={} p[2]=0 pickle.dump(q, open("save12.p","ab")) f={} f['b']=p pi
我需要附加到一个pickle文件(因为我没有一个人的整个字典).所以为了做同样的事情,我写了以下代码:

import pickle
 p={}
 p[1]=2
 q={}
 q['a']=p
 p={}
 p[2]=0
 pickle.dump(q, open("save12.p","ab"))
 f={}
 f['b']=p
 pickle.dump(f,open("save12.p","ab"))

但是,当我加载pickle文件时,我没有找到字典f的值吗?????

有人可以建议我应该如何附加在pickle文件中?

此外,像’dbm’这样的数据库不能满足我的需求,因为我正在使用Windows

Pickle流完全是独立的,因此unpickling将一次取消一个对象.

因此,要取消分割多个流,您应该反复取消该文件的取消,直到获得EOFError:

>>> f=open('a.p', 'wb')
>>> pickle.dump({1:2}, f)
>>> pickle.dump({3:4}, f)
>>> f.close()
>>> 
>>> f=open('a.p', 'rb')
>>> pickle.load(f)
{1: 2}
>>> pickle.load(f)
{3: 4}
>>> pickle.load(f)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
EOFError

所以你的unpickle代码可能看起来像

import pickle
objs = []
while 1:
    try:
        objs.append(pickle.load(f))
    except EOFError:
        break
网友评论