代码之家  ›  专栏  ›  技术社区  ›  Brian

在python中使用storbinary进行部分上载

  •  1
  • Brian  · 技术社区  · 16 年前

    我已经编写了一些python代码来下载图片

    urllib.urlopen().read()
    

    然后上传到FTP站点

    ftplib.FTP().storbinary()
    

    但我有个问题。有时图像文件只是部分上传,所以我得到的图像底部20%左右切断。我检查了本地下载的版本,并成功下载了整个图像,这让我相信这是storbinary的问题。我相信我正在正确地打开和关闭所有文件。有人知道我为什么要用storbinary进行部分上传吗?

    更新: 当我运行python shell中的命令时,上载成功完成,我不知道为什么它会与作为脚本运行时不同…

    2 回复  |  直到 15 年前
        1
  •  0
  •   Brian    16 年前

    结果发现我没有正确关闭下载的文件。让我们假装这从未发生过。

        2
  •  0
  •   Brian    15 年前

    我看过这段代码已经有一段时间了,但我记得关键是我没有正确地关闭下载的文件。不过,我有工作代码,所以为了防止上传出现问题,而不是下载出现问题,以下两个片段都是:

    以下是下载图像的工作代码:

    socket = urllib.urlopen(TheURL)
    FileContents = socket.read()
    LocalFilename = LocalDir + FilenameOnly
    LocalFile = open(LocalDir + FilenameOnly, 'wb')
    LocalFile.write(FileContents)
    LocalFile.close()
    

    在哪里? TheURL 是我要下载的文件的URL, FilenameOnly 只是路径的文件名部分,并且 LocalDir 是本地目的地。 我想我的问题是我没有打电话 LocalFile.close() .

    以下是上传图像的工作代码:

    FTPServer = ftplib.FTP(FTPServer, FTPUsername, FTPPassword)
    UploadFile = open(Filename, "rb")
    FTPServer.cwd(FTPSubDirectory)
    
    UploadFile.close()
    FTPServer.quit()
    

    问题也可能是我没有打电话 FTPServer.quit()

    如果有人对这段代码有任何疑问,我会很高兴地在评论中回复;我真的感到很遗憾,我把谷歌挂了起来!