有没有办法使用部分下载功能通过 HTTP 下载巨大且仍在增长的文件?
看来这段代码每次执行时都会从头开始下载文件:
import urllib
urllib.urlretrieve ("http://www.example.com/huge-growing-file", "huge-growing-file")
我想要:
- 仅获取新写入的数据
- 仅当源文件变小(例如已旋转)时才从头开始下载。
可以使用范围标头进行部分下载,以下将请求选定的字节范围:
req = urllib2.Request('http://www.python.org/')
req.headers['Range'] = 'bytes=%s-%s' % (start, end)
f = urllib2.urlopen(req)
例如:
>>> req = urllib2.Request('http://www.python.org/')
>>> req.headers['Range'] = 'bytes=%s-%s' % (100, 150)
>>> f = urllib2.urlopen(req)
>>> f.read()
'l1-transitional.dtd">\n\n\n<html xmlns="http://www.w3.'
使用此标头您可以恢复部分下载。就您而言,您所要做的就是跟踪已下载的大小并请求新的范围。
请记住,服务器需要接受此标头才能正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)