【问题标题】:Python ftplib: bz2 files uploaded to a ftp sometimes become corruptedPython ftplib:上传到 ftp 的 bz2 文件有时会损坏
【发布时间】:2017-07-26 13:56:43
【问题描述】:

我正在使用 ftplib 模块将许多 bz2 文件上传到一个 ftp(每天大约 1000 个文件,每个文件大约 5 MB,存储一个 numpy 数组)。有时,某些上传的文件已损坏。当我尝试使用 bz2 和 numpy 读取它时,我收到错误“IOError:无效数据流”。如果我尝试使用 WinRAR 等软件解压缩它,我会收到消息“filename 中的校验和错误。文件已损坏。”

上传数据的代码没有什么特别之处。基本上是这样的:

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

对于损坏的文件,如果我使用相同的代码再次上传它们,大部分时间我可以得到好的文件。

使用不同的 ftp 并不能消除这个问题。

我还注意到损坏的文件与正常文件的字节数完全相同。我想所有必要的信息都已经上传了,所以我真的不明白为什么文件损坏了。

【问题讨论】:

    标签: python ftplib


    【解决方案1】:

    此问题的解决方法可以是:

    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.
    

    它会不断尝试上传文件,并将关闭已上传的文件。

    【讨论】:

    • 感谢您的建议。我无法立即尝试您的代码,但似乎即使上传的文件已损坏,代码也不会引发异常。上传过程似乎没有问题,我需要检查所有上传的文件以找出损坏的文件。
    猜你喜欢
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2018-05-03
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多