Object 如何使用pickle模块的pickle.loads()函数逐个读取和解压二进制文件中写入的类对象

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 : "

我正在用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 : "))
        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()”函数