我尝试使用 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