我需要附加一个泡菜文件(因为我一次都没有整个字典)。为此,我编写了以下代码:
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"))
但是,当我加载泡菜文件时,我在那里找不到字典f的值?
有人可以建议我应该如何添加一个泡菜文件吗?
另外,像“ dbm”这样的数据库无法满足我的需求,因为我正在Windows上工作
腌制流完全是独立的,因此解腌将一次解腌一个对象。
因此,要释放多个流,应重复释放该文件,直到得到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
这样您的代码便会看起来像
import pickle objs = [] while 1: try: objs.append(pickle.load(f)) except EOFError: break