Python:保存对象并使用pickle。使用 pickle.dump 时出错

Posted

技术标签:

【中文标题】Python:保存对象并使用pickle。使用 pickle.dump 时出错【英文标题】:Python: saving objects and using pickle. Error using pickle.dump 【发布时间】:2010-12-25 12:50:37 【问题描述】:

你好,我有一个错误,我不知道原因:

>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
>>> import pickle
>>> filehandler = open("Fruits.obj",'w')
>>> pickle.dump(banana,filehandler)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python31\lib\pickle.py", line 1354, in dump
Pickler(file, protocol, fix_imports=fix_imports).dump(obj)
TypeError: must be str, not bytes
>>>

我不知道如何解决这个错误,因为我不明白。 非常感谢。

【问题讨论】:

为我工作。在此之前命名空间是否受到了某种污染? @Andrew Jaffe:对不起...我不明白你...你是什么意思? 如果这些是您在 python 会话中做的第一件事,它会起作用吗? 我根据下面的答案更正了它,现在它可以工作了,但我仍然不知道如何加载我的对象。 【参考方案1】:

您必须以二进制模式打开您的 filehandler,使用 wb 而不是 w

filehandler = open(b"fruits.obj","wb")

【讨论】:

以上是关于Python:保存对象并使用pickle。使用 pickle.dump 时出错的主要内容,如果未能解决你的问题,请参考以下文章

python数据持久存储:pickle模块的使用

使用pickle保存机器学习模型详解及实战(picklejoblib)

python数据持久存储:pickle模块的基本使用

[转]python数据持久存储:pickle模块的基本使用

python pickle

pickle模块的基本使用