fun*_*nki 5 python download request
我正在使用requests以下方式下载文件:
import requests
req = requests.get(url, stream=True)
with open(local_filename, 'wb') as f:
for chunk in req.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
f.flush()
Run Code Online (Sandbox Code Playgroud)
gzip文件的问题是它们被请求自动解码,因此我在磁盘上获得解压缩的文件,而我需要原始文件.
有没有办法告诉请求不要这样做?
如以上评论所讨论,这似乎已经解决了该问题:
请求会自动解压缩gzip编码的响应...如果需要,您还可以直接访问原始响应(甚至套接字)。
在文档中搜索“原始响应” requests.Response.raw,将产生file原始响应流的类似表示。
import requests
r = requests.get(url, stream=True)
with open(local_filename, 'wb') as f:
for chunk in r.raw.stream(1024, decode_content=False):
if chunk:
f.write(chunk)
Run Code Online (Sandbox Code Playgroud)
这样,您将避免自动解压缩 gzip 编码的响应,将其保存到文件中,因为它是从 Web 服务器接收的,一个块一个块。