Python HTTP响应内容长度w gzip

Python HTTP响应内容长度w gzip,python,stream,gzip,python-requests,content-length,Python,Stream,Gzip,Python Requests,Content Length,我使用Python的请求库发出get请求,并将内容流式传输到文件中。我想通过将进度条的最大值设置为resp.headers['content-length'],并使用chunksize=1字节(response.iter\u content(chunk\u size=1))迭代响应来添加进度条。但是,响应的内容编码是gzip,因此内容长度指的是压缩大小 使用以下代码: resp = requests.get(...., stream=True) count = 0 for x in resp.i

我使用Python的请求库发出get请求,并将内容流式传输到文件中。我想通过将进度条的最大值设置为resp.headers['content-length'],并使用chunksize=1字节(response.iter\u content(chunk\u 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

这并没有解决我的问题,即resp.headers.get('content-length')=127,这不等于迭代次数(count=64)。进度条库和实现与请求内部无关,它自动解码gzip。迭代内容时的错误内容长度很难调试。