我正在使用Python的请求库发出get请求,并将内容流式传输到一个文件中。我想添加一个进度条,方法是将进度条的最大值设置为resp.headers['content-length'],并使用chunksize=1字节(response.iter_content(chunk_size=1))迭代响应。但是,响应的内容编码是gzip,因此内容长度指的是压缩后的大小。
使用以下代码:
resp = requests.get(...., stream=True)
count = 0
for x in resp.iter_content(chunk_size=1):
count += 1
我得到:count=64和resp.headers['content-length']=127。
我应该使用什么作为进度条的最大值?
我会使用Kenneth的clint并这样做。或者,您应该将进度条的实现设置为从127开始更新。
from clint.textui import progress
import requests
resp = requests.get(url, stream=True)
total_length = int(resp.headers.get('content-length'))
for chunk in progress.bar(resp.iter_content(chunk_size=1), expected_size=(total_length / 1) + 1):
pass