我已经编写了一些python代码来使用
下载图像urllib.urlopen().read()
然后使用
将其上传到FTP站点ftplib.FTP().storbinary()
但我遇到了问题。有时图像文件只是部分上传,所以我得到的图像底部有20%左右被截断。我已经检查了本地下载的版本,并且我已经成功下载了整个图像,这让我相信它是storbinary的一个问题。我相信我正确地打开和关闭所有文件。有没有人知道我为什么要使用storbinary进行部分上传?
更新 当我在Python shell中运行命令时,上传成功完成,我不知道为什么它与以脚本运行时不同...
答案 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员工都挂了,我觉得非常糟糕!