gpt4 book ai didi

Python urllib2 恢复下载在网络重新连接时不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:18 24 4
gpt4 key购买 nike

我正在使用 urllib2 制作一个恢复下载器,大致基于 this方法。我可以结束程序并重新启动它,它会从停止的地方开始下载,下载最终大小与一次下载相同的文件。

但是,我在禁用和重新启用网络时对其进行了测试,但它无法正确下载。文件大小最终超过文件应有的长度,并且文件无法正常工作。有没有我遗漏了什么,或者这可能是 urllib2 错误?

    import urllib2
opener = urllib2.build_opener();

self.count = 0 # Counts downloaded size.
self.downloading = True
while (not(self.success) and self.downloading):
try:
self.Err = ""
self._netfile = self.opener.open(self.url)
self.filesize = float(self._netfile.info()['Content-Length'])

if (os.path.exists(self.localfile) and os.path.isfile(self.localfile)):
self.count = os.path.getsize(self.localfile)
print self.count,"of",self.filesize,"downloaded."
if self.count >= self.filesize:
#already downloaded
self.downloading = False
self.success = True
self._netfile.close()
return

if (os.path.exists(self.localfile) and os.path.isfile(self.localfile)):
#File already exists, start where it left off:
#This seems to corrupt the file sometimes?
self._netfile.close()
req = urllib2.Request(self.url)
print "file downloading at byte: ",self.count
req.add_header("Range","bytes=%s-" % (self.count))
self._netfile = self.opener.open(req)
if (self.downloading): #Don't do it if cancelled, downloading=false.
next = self._netfile.read(1024)
self._outfile = open(self.localfile,"ab") #to append binary
self._outfile.write(next)
self.readsize = desc(self.filesize) # get size mb/kb
self.count += 1024
while (len(next)>0 and self.downloading):
next = self._netfile.read(1024)
self._outfile.write(next)
self.count += len(next)
self.success = True
except IOError, e:
print e
self.Err=("Download error, retrying in a few seconds: "+str(e))
try:
self._netfile.close()
except Exception:
pass
time.sleep(8) #Then repeat

最佳答案

我在 IOError 处理程序中添加了 self._outfile.close() 和 self._netfile.close() ,这似乎已经修复了它。我猜这个错误是由于没有关闭而再次打开追加造成的。

关于Python urllib2 恢复下载在网络重新连接时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com