Python-ftplib:bz2上传到ftp的文件有时会损坏
我使用ftplib模块将许多bz2文件上传到ftp(每天大约1000个文件,每个文件大约5 MB,存储一个numpy阵列)。偶尔,一些上传的文件会损坏。当我尝试使用bz2和numpy读取它时,我得到了错误“IOError:invalid data stream”。如果我尝试使用WinRAR之类的软件解压它,我会收到消息“文件名中的校验和错误。文件已损坏。” 上传数据的代码没有什么特别的。基本上是这样的:Python-ftplib:bz2上传到ftp的文件有时会损坏,python,ftplib,Python,Ftplib,我使用ftplib模块将许多bz2文件上传到ftp(每天大约1000个文件,每个文件大约5 MB,存储一个numpy阵列)。偶尔,一些上传的文件会损坏。当我尝试使用bz2和numpy读取它时,我得到了错误“IOError:invalid data stream”。如果我尝试使用WinRAR之类的软件解压它,我会收到消息“文件名中的校验和错误。文件已损坏。” 上传数据的代码没有什么特别的。基本上是这样的: while True: try: fidFile = open(fi
while True:
try:
fidFile = open(fileName, 'rb')
ftp.storbinary('STOR '+fileName, fidFile)
fidFile.close()
break
except:
continue
对于损坏的文件,如果我使用相同的代码再次上传它们,大多数情况下我可以得到好的文件
使用不同的ftp并不能消除此问题
我还注意到,损坏的文件与良好的文件具有完全相同的字节。我想所有必要的信息都已上载,因此我真的不明白文件为何已损坏。解决此问题的方法可以是:
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.
它不断尝试上载文件,并将在上载文件时停止。此问题的解决方法可以是:
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.
它一直在尝试上载文件,并将在上载文件时停止。谢谢您的建议。我无法立即尝试您的代码,但似乎即使上载的文件已损坏,代码也不会引发异常。上传过程似乎没有问题,我需要检查所有上传的文件,以找出损坏的文件。谢谢你的建议。我无法立即尝试您的代码,但似乎即使上载的文件已损坏,代码也不会引发异常。上传过程似乎没有问题,我需要检查所有上传的文件,以找出损坏的文件。