如何使用Python下载请求下载.gz文件而不解码它?

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文件的问题是它们被请求自动解码,因此我在磁盘上获得解压缩的文件,而我需要原始文件.

有没有办法告诉请求不要这样做?

Dan*_*ski 5

如以上评论所讨论,这似乎已经解决了该问题:

文档的requests模块

请求会自动解压缩gzip编码的响应...如果需要,您还可以直接访问原始响应(甚至套接字)。

在文档中搜索“原始响应” requests.Response.raw,将产生file原始响应流的类似表示。


Bob*_* P. 5

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 服务器接收的,一个块一个块。