gpt4 book ai didi

python - 如何在 python 中使用 append 和 pickle?

转载 作者:IT老高 更新时间:2023-10-28 20:36:40 26 4
gpt4 key购买 nike

我需要附加到一个泡菜文件(因为我一次没有完整的字典)。所以为了做同样的事情,我编写了以下代码:

 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 的值??????

有人可以建议我应该如何添加到泡菜文件中???

当我在 windows 上工作时,像“dbm”这样的数据库也不能满足我的需要

最佳答案

Pickle 流是完全自包含的,因此 unpickle 一次将 unpickle 一个对象。

因此,要对多个流进行 unpickle,您应该反复 unpickle 文件,直到出现 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

关于python - 如何在 python 中使用 append 和 pickle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com