如何使用pickle模块的pickle.loads函数一一读取和解散二进制文件中写入的类对象

问题描述

我正在腌制并将“ student”类的三个对象写入带有Python代码的二进制文件中,如下所示:

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()

我正在腌制并将三个“ student”类的对象写入二进制文件“ studentrecord.bin”中。但是,在使用“ file_object.read()”和“ pickle.loads()”函数读取和解开这些二进制数据之后,只有第一个对象被重构。同样使用“ file_object.readline()”会引发异常“ UnpicklingError:泡菜数据被截断”。如何通过“ pickle.loads()”函数一个一个地释放和重构所有这三个对象。需要指出的是,我不想使用“ pickle.load()”功能

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)