这是一个完全有效的示例,它建立在Anurag响应中的分块方法的基础上。我的版本允许您设置块大小,并附加任意报告功能:
import urllib2, sysdef 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_farif __name__ == '__main__': response = urllib2.urlopen('http://www.ebay.com'); chunk_read(response, report_hook=chunk_report)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)