unpickling' _io.BufferedReader'错误

时间:2018-03-29 12:56:35

标签: python python-3.x pickle

大家好,我使用下面的代码

为文件挑选了一个字典列表
fd = open(file_name,'ab')
for i in listOFDicts:
    pickle.dump(i,fd)
fd.close()

然后现在我想使用下面的代码加载它

with open(filename, 'rb') as  pickleFile:
    content = pickle.loads(pickleFile)

我收到此错误"需要类似字节的对象,而不是' _io.BufferedReader'"

当我使用load()而不是loads()

我收到此错误

" UnicodeDecodeError:' ascii'编解码器不能解码位置0中的字节0xc6:序数不在范围内(128)"

如果我使用了pickle.load(filename,encoding =' latin1')

我收到此错误 " ModuleNotFoundError:没有名为' bson'"

的模块

任何帮助都会非常感激

此致

1 个答案:

答案 0 :(得分:0)

我编写了以下代码,向您展示如何使用pickle,根据您的需要进行编辑。

import pickle

dict = {0:0, 1:1}

list_of_dict = [dict, dict]

with open("save.pickle", "wb") as f:
    pickle.dump(list_of_dict, f)

del list_of_dict
#print(list_of_dict)
#put below in the other script.
with open("save.pickle", "rb") as f:
    list_of_dict = pickle.load(f)
print(list_of_dict)

这是用python 3编写的,如果你使用的是python 2,请更改以下行:

import pickle

import cPickle as pickle

并适当更改打印件。

del命令用于删除变量,以节省我在2个脚本中编写它的时间。您可以忽略该行,然后在第二个脚本中写下余数。

来源: 我过去和以下几个使用的python脚本: https://wiki.python.org/moin/UsingPickle

编辑:我改进了代码。尝试并类似地使用它。