部分上传使用pyto中的storbinary

时间:2009-03-21 22:02:27

标签: python ftp ftplib

我已经编写了一些python代码来使用

下载图像
urllib.urlopen().read()

然后使用

将其上传到FTP站点
ftplib.FTP().storbinary()

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

其中TheURL是我尝试下载的文件的网址,FilenameOnly只是路径的文件名部分,LocalDir是本地目的地。 我认为我的问题是我没有打电话给LocalFile.close()

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

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

UploadFile.close()
FTPServer.quit()

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

如果有人对此代码有任何疑问,我会很乐意在评论中回复;我让任何Google员工都挂了,我觉得非常糟糕!