上面写着:用完了inpu

2024-05-19 07:40:52 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我创建的一个类

import pickle

class CarRecord:
    def __init__(self):
        self.VehicleID = ""
        self.Registration = ""
        self.DateOfRegistration = None
        self.EngineSize = 0
        self.PurchasePrice = 0.00

ThisCar = CarRecord()
Car = [ThisCar for i in range(5)]
Car[0].EngineSize = 2400
Car[1].EngineSize = 2300
Car[2].EngineSize = 2200
Car[3].EngineSize = 2100
Car[4].EngineSize = 2000

我想把这些记录写入二进制文件

^{pr2}$

把记录加到名单的末尾

while True:

我在这里检查文件的结尾

Car.append(pickle.load(CarFile))
CarFile.close()
print(Car)

Tags: 文件importselfinitdef记录registrationcar
1条回答
网友
1楼 · 发布于 2024-05-19 07:40:52

试试这段代码,你的代码的问题是你做了一段时间真的,这导致了EOF,你需要指定解取长度,或者按照编辑中指定的EOFError句柄。在

import pickle

class CarRecord:
    def __init__(self):
        self.VehicleID = ""
        self.Registration = ""
        self.DateOfRegistration = None
        self.EngineSize = 0
        self.PurchasePrice = 0.00

ThisCar = CarRecord()
Car = [ThisCar for i in range(5)]
Car[0].EngineSize = 2400
Car[1].EngineSize = 2300
Car[2].EngineSize = 2200
Car[3].EngineSize = 2100
Car[4].EngineSize = 2000

CarFile = open('Cars.DAT', 'wb')
for i in range(0,5):
    pickle.dump(Car[i], CarFile)
print(Car)

CarFile.close()
CarFile = open('Cars.DAT', 'rb')
Car = []

print("here")

for i in range(0,5):
    Car.append(pickle.load(CarFile))

CarFile.close()
print(Car)

在编辑:-I找到了一个更好的答案,它不使用硬编码值。Reading from a file using pickle and for loop in python

我也会把答案贴在这里。基本上,它捕获eoferor和UnpicklingError,这样,当文件结束时,它就关闭了,您可以正常使用它

^{pr2}$

相关问题 更多 >

    热门问题