2017-07-26 33 views
1

ftplibモジュールを使用してftpに多くのbz2ファイルをアップロードしています(1日あたり約1000ファイル、すべてのファイルは約5 MBです)。一度、アップロードされたファイルの一部が破損しています。 bz2とnumpyを使用して読み込もうとすると、エラー "IOError:invalid data stream"が表示されます。 WinRARなどのソフトウェアを使用して圧縮を解凍しようとすると、「チェックサムエラーのファイル名がです。ファイルが壊れています。」Python ftplib:ftpにアップロードされたbz2ファイルが破損することがある

データをアップロードするコードは何も特別なものはありません。基本的には次のようになります。破損したファイルについては

while True: 
    try: 
     fidFile = open(fileName, 'rb') 
     ftp.storbinary('STOR '+fileName, fidFile) 
     fidFile.close() 
     break 
    except: 
     continue 

、私は、私は良いのファイルを取得することができますほとんどの時間を同じコードを使用して再度アップロードします。

異なるftpを使用しても、この問題は解決されません。

また、破損したファイルが正常なファイルとまったく同じバイトであることに気付きました。私は必要な情報がすべてアップロードされていると思うので、ファイルが壊れている理由は分かりません。この問題の

答えて

0

回避策は、することができ:それは、ファイルをアップロードしようとし続け、それがアップロードされたものを消灯します

def upload(fileName): 
    try: 
     fidFile = open(fileName, 'rb') 
     ftp.storbinary('STOR '+fileName, fidFile) 
     fidFile.close() 
    except Exception as e: 
     print(e) 
     upload(fileName) 
     # Can be improved by restricting retry limit. 

+0

ありがとうございます。すぐにコードを試すことはできませんが、アップロードされたファイルが破損している場合でも、コードは例外をスローしないようです。アップロードプロセスは何も間違っていません。壊れたファイルを見つけるにはアップロードしたすべてのファイルをチェックする必要があります。 –

関連する問題