2016-08-03 11 views
-2

Pickledファイルのリストをループしていて、一部のファイルにEOFエラーがあります。つまり、正しく書き込まれなかったということです。これらのエラーを持つファイルの周りをループし、スクリプト全体の停止ではなく次のファイルに進む方法はありますか?EOFエラーピクル

答えて

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

まず、あなたがこのようバイナリモードでのピクルスファイルを開いていることを確認するには、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)