相关疑难解决方法(0)

保存和加载对象并使用pickle

我正在尝试使用pickle模块保存和加载对象.
首先,我声明我的对象:

>>> class Fruits:pass
...
>>> banana = Fruits()

>>> banana.color = 'yellow'
>>> banana.value = 30
Run Code Online (Sandbox Code Playgroud)

之后我打开一个名为'Fruits.obj'的文件(之前我创建了一个新的.txt文件,我重命名为'Fruits.obj'):

>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
Run Code Online (Sandbox Code Playgroud)

执行此操作后,我关闭了会话,然后我开始了一个新的会话,然后我将下一个(尝试访问它应该保存的对象):

file = open("Fruits.obj",'r')
object_file = pickle.load(file)
Run Code Online (Sandbox Code Playgroud)

但我有这样的信息:

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
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么办,因为我不明白这个消息.有谁知道如何加载我的对象'香蕉'?谢谢!

编辑: 因为你们有些人已经吮吸我放:

>>> import pickle
>>> file = open("Fruits.obj",'rb')
Run Code Online (Sandbox Code Playgroud)

没有问题,但我接下来的是:

>>> object_file = …
Run Code Online (Sandbox Code Playgroud)

python object pickle

91
推荐指数
5
解决办法
25万
查看次数

标签 统计

object ×1

pickle ×1

python ×1