我正在尝试使用 urllib2 http 客户端在 python 中创建下载进度条。我查看了 API(以及谷歌),似乎 urllib2 不允许您注册进度挂钩。然而,较旧的已弃用的 urllib 确实具有此功能。
有谁知道如何使用 urllib2 创建进度条或报告挂钩?或者还有其他一些技巧可以获得类似的功能吗?
这是一个完全有效的示例,它建立在 Anurag 响应分块方法的基础上。我的版本允许您设置块大小,并附加任意报告功能:
import urllib2, sys
def chunk_report(bytes_so_far, chunk_size, total_size):
percent = float(bytes_so_far) / total_size
percent = round(percent*100, 2)
sys.stdout.write("Downloaded %d of %d bytes (%0.2f%%)\r" %
(bytes_so_far, total_size, percent))
if bytes_so_far >= total_size:
sys.stdout.write('\n')
def chunk_read(response, chunk_size=8192, report_hook=None):
total_size = response.info().getheader('Content-Length').strip()
total_size = int(total_size)
bytes_so_far = 0
while 1:
chunk = response.read(chunk_size)
bytes_so_far += len(chunk)
if not chunk:
break
if report_hook:
report_hook(bytes_so_far, chunk_size, total_size)
return bytes_so_far
if __name__ == '__main__':
response = urllib2.urlopen('http://www.ebay.com');
chunk_read(response, report_hook=chunk_report)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)