【发布时间】:2011-05-30 15:48:44
【问题描述】:
我正在尝试使用 pickle 模块保存和加载对象。
首先我声明我的对象:
>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
之后我打开一个名为“Fruits.obj”的文件(之前我创建了一个新的 .txt 文件并重命名了“Fruits.obj”):
>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
完成此操作后,我关闭了我的会话并开始了一个新会话,然后我放入了下一个会话(尝试访问它应该保存的对象):
file = open("Fruits.obj",'r')
object_file = pickle.load(file)
但我有这样的信息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python31\lib\pickle.py", line 1365, in load
encoding=encoding, errors=errors).load()
ValueError: read() from the underlying stream did notreturn bytes
我不知道该怎么做,因为我不明白这条信息。 有谁知道我如何加载我的对象“香蕉”? 谢谢!
编辑: 正如你们中的一些人所建议的那样,我说:
>>> import pickle
>>> file = open("Fruits.obj",'rb')
没有问题,但是我放的下一个是:
>>> object_file = pickle.load(file)
我有错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python31\lib\pickle.py", line 1365, in load
encoding=encoding, errors=errors).load()
EOFError
【问题讨论】: