Как решить ошибку EOF при чтении двоичного файла - PullRequest
0 голосов
/ 18 декабря 2018
class CarRecord:                    # declaring a class without other methods
  def init (self):                # constructor
    self .VehicleID = ""
    self.Registration = ""
    self.DateOfRegistration = None
    self.EngineSize = 0
    self.PurchasePrice = 0.00

import pickle                       # this library is required to create binary f iles
ThisCar = CarRecord()
Car = [ThisCar for i in range (100)]

CarFile = open ('Cars.DAT', 'wb')   # open file for binary write

for i in range (100) :              # loop for each array element
    pickle.dump (Car[i], CarFile)   # write a whole record to the binary file

CarFile.close() # close file

CarFile = open( 'Cars.DAT','rb')    # open file for binary read
Car = []                            # start with empty list
while True:                         # check for end of file
    Car.append(pickle.load(CarFile))# append record from file to end of l i st

CarFile.close()

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

вам нужно поймать EOFError в вашем цикле ...

Вы не можете читать вечно из файла, который не содержит бесконечных данных, поэтому вам нужно найти способ остановки цикла.

Кроме того, эти петли абсолютно не нужны, вы можете напрямую сохранить список, и он просто загрузит список.

0 голосов
/ 18 декабря 2018

что по этому поводу?

while True:  # check for end of file
    try:
        Car.append(pickle.load(CarFile))  # append record from file to end of l i st
    except EOFError:
        print('EOF!!!')
        break
...