以下是我用来通过ftp下载的一些代码。我试图停止下载,然后继续或重新下载。我试过ftp.abort(),但它只是挂起并返回超时。如何阻止ftp在python下载?
ftplib.error_proto: 421 Data timeout. Reconnect. Sorry.
场景: 的方案是,用户会选择要下载的文件,同时下载,用户可以停止当前的下载和下载新的文件。如果用户停止下载,代码'if os.path.getsize(self.file_path)> 117625:'就是我的例子。它不是文件的完整大小。
谢谢。
from ftplib import FTP
class ftpness:
def __init__(self):
self.connect(myhost, myusername, mypassword)
def handleDownload(self,block):
self.f.write(block)
if os.path.getsize(self.file_path) >117625:
self.ftp.abort()
def connect(self,host, username, password):
self.ftp = FTP(host)
self.ftp.login(username, password)
self.get(self.file_path)
def get(self,filename):
self.f = open(filename, 'wb')
self.ftp.retrbinary('RETR ' + filename, self.handleDownload)
self.f.close()
self.ftp.close
a = ftpness()
我试过你的代码,它挂起:) – unice 2012-04-09 13:45:19
“FTP.abort() - >中止正在进行的文件传输,使用它并不总是有效,但值得一试。“这是我们可以在文档中找到的...如果超时错误消失,你能让我知道吗 – blackwind 2012-04-09 13:57:32
它仍然会引发超时错误。我已阅读有关ftp.abort(),这就是为什么我想知道是否有其他方式停止下载没有超时错误。 – unice 2012-04-09 14:04:01