Object 如何使用pickle模块的pickle.loads()函数逐个读取和解压二进制文件中写入的类对象
我正在用Python代码将“student”类的三个对象酸洗并写入一个二进制文件,如下所示:Object 如何使用pickle模块的pickle.loads()函数逐个读取和解压二进制文件中写入的类对象,object,pickle,Object,Pickle,我正在用Python代码将“student”类的三个对象酸洗并写入一个二进制文件,如下所示: import pickle class student: def __init__(self): self.roll=0 self.name="" return def readdata(self): self.roll=int(input("Enter Roll Number : "
import pickle
class student:
def __init__(self):
self.roll=0
self.name=""
return
def readdata(self):
self.roll=int(input("Enter Roll Number : "))
self.name=input("Enter Student Name: ")
return
def showdata(self):
print("Roll Number :",self.roll)
print("Student Name:",self.name)
return
fob=open("./studentrecord.bin", "ab+")
for i in range(3):
stuobj=student()
stuobj.readdata()
pickobj=pickle.dumps(stuobj)
fob.write(pickobj)
print("Object pickled and written successfully\n")
fob.seek(0,0)
try:
while fob:
bdata=fob.read()
pdata=pickle.loads(bdata)
pdata.showdata()
except EOFError:
print("Object unpickled successfully\n")
fob.close()
我正在二进制文件“studentrecord.bin”中编写三个“student”类对象。但在使用“file_object.read()”和“pickle.loads()”函数读取并取消勾选这些二进制数据之后,只有第一个对象被重新构造。还使用“file_object.readline()”引发异常“UnpicklingError:pickle数据被截断”。如何通过“pickle.loads()”函数一个接一个地取消勾选和重新组合这三个对象。需要注意的是,我不想使用“pickle.load()”函数