一个与download函数相同的简单类:import urllib
import threading
class Downloader:
def __init__(self):
self.stop_down = False
self.thread = None
def download(self, url, destination):
self.thread = threading.Thread(target=self.__down, args=(url, destination))
self.thread.start()
def __down(self, url, dest):
_continue = True
handler = urllib.urlopen(url)
self.fp = open(dest, "w")
while not self.stop_down and _continue:
data = handler.read(4096)
self.fp.write(data)
_continue = data
handler.close()
self.fp.close()
def cancel(self):
self.stop_down = True
因此,当有人单击“取消”按钮时,您必须调用cancel()方法。在
请注意,如果您取消了部分下载的文件,这将不会删除,但这应该不是很难使用os.unlink()来实现的。在
下面的示例脚本演示如何使用它,开始下载约20Mb的文件,并在5秒后取消下载:
^{pr2}$