1

我已经编写了一些 python 代码来使用下载图像

urllib.urlopen().read()

然后使用上传到 FTP 站点

ftplib.FTP().storbinary()

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

更新: 当我在 Python shell 中运行命令时,上传成功完成,我不知道为什么它与作为脚本运行时不同......

4

2 回答 2

0

事实证明我没有正确关闭下载的文件。让我们都假装这从未发生过。

于 2009-03-22T04:52:53.360 回答
0

自从我查看这段代码以来已经有一段时间了,但我记得关键是我没有正确关闭下载的文件。不过我有工作代码,所以以防万一是上传问题而不是下载问题,这里有两个片段:

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

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()

如果有人对此代码有任何疑问,我会很乐意在评论中回复;让任何 Google 员工悬而未决,我感到非常难过!

于 2011-01-03T23:47:05.230 回答