2016-08-03 43 views
-2

我正在通過pickled文件列表循環,一些文件有EOF錯誤,這意味着它們沒有正確寫入。有沒有辦法循環有這些錯誤的文件,並繼續到下一個文件,而不是整個腳本停止?EOF Error Pickle

回答

1

使用try/except

所有的
for pkl_file in pkls: 
    try: 
     obj = pickle.load(..) # or however you load the file 
    except EOFError: 
     continue 
    # rest of code, handling obj 
+0

大,謝謝! – Kate

0

首先,確保你是在二進制模式打開pickle文件,因爲這是當讀/寫數據的泡菜EOF錯誤的潛在原因。

當你正在閱讀的鹹菜文件調用open()時使用rb模式。同樣,如果它是寫入pickle文件的代碼,請確保通過指定模式wb以二進制模式寫入文件。

其次捕獲異常而忽略它,在「忽略」意味着你發出警告信息,因此任何真正的壞泡菜文件將被注意到。

import cPickle as pickle 

for filename in pickle_files: 
    try: 
     with open(filename, 'rb') as f: 
      data = pickle.load(f) 
      # use the data 
    except EOFError as exc: 
     print(exc)