下载带有python请求的*.gz压缩文件会损坏它

下载带有python请求的*.gz压缩文件会损坏它,python,gzip,python-requests,Python,Gzip,Python Requests,我使用这段代码(它只是一部分)下载*.gz归档文件 with requests.session() as s: s.post(login_to_site_URL, payload) load = s.get(scene, stream=True) with open(path_to_file, "wb") as save_command: for chunk in load.iter_content(chunk_size=1024, decode

我使用这段代码(它只是一部分)下载*.gz归档文件

with requests.session() as s:
    s.post(login_to_site_URL, payload)    
    load = s.get(scene, stream=True)

    with open(path_to_file, "wb") as save_command:
        for chunk in load.iter_content(chunk_size=1024, decode_unicode=False):
            if chunk:
                save_command.write(chunk)
                save_command.flush()
下载后,文件的大小是我通过单击“另存为”下载文件时的两倍。文件已损坏。 该文件的链接为:

文件需要登录名和密码,所以我添加了一个屏幕截图,显示我在点击链接时看到的内容:

看起来有一些选项集将此存档定义为文本

文件头是:

{'content-length': '58277138',
'content-encoding': 'gzip',
'set-cookie': 'cidaviales=53616c7465645f5fc8f0abdb26f7b0536784ae4e8b302410a288f1f67ccc0afd13ce067d97ba237dc27749d9957f30457f1a1d9763b03637; path=/,
 avialestime=1407386483; path=/; expires=Wed,
 05-Nov-2014 04:41:23 GMT,
ciddaviales=53616c7465645f5fc8f0abdb26f7b0536784ae4e8b302410a288f1f67ccc0afd13ce067d97ba237dc27749d9957f30457f1a1d9763b03637; domain=aviales.ru; path=/',
'accept-ranges': 'bytes',
'server': 'Apache/1.3.37 (Unix) mod_perl/1.30',
'last-modified': 'Wed, 06 Aug 2014 06:17:14 GMT',
'etag': '"21d4e63-3793d12-53e1c86a"',
'date': 'Thu, 07 Aug 2014 04:41:23 GMT',
'content-type': 'text/plain; charset=windows-1251'}

如何使用python请求库正确下载此文件?

看起来请求会自动为您解压缩内容。看

请求自动解压缩gzip编码的响应,并且 如果可能,最好将响应内容解码为unicode。你可以 如果需要,可以直接访问原始响应(甚至套接字) 也


如果接受编码请求头包含gzip,则这是默认行为。您可以通过打印s.request.headers来检查这一点。为了能够获得原始数据,您应该修改此头文件dict以排除gzip,但是在您的情况下,解压缩的数据看起来像是有效的hdf文件-因此,只需使用此扩展名保存它并使用它

它看起来像是请求自动为您解压缩内容。看

请求自动解压缩gzip编码的响应,并且 如果可能,最好将响应内容解码为unicode。你可以 如果需要,可以直接访问原始响应(甚至套接字) 也


如果接受编码请求头包含gzip,则这是默认行为。您可以通过打印s.request.headers来检查这一点。为了能够获得原始数据,您应该修改此头文件dict以排除gzip,但是在您的情况下,解压缩的数据看起来像是有效的hdf文件-因此,只需使用此扩展名保存它并使用它

可能是它自动解压缩了gzip内容,你检查过下载的数据里面有什么吗?可能是它自动解压缩了gzip内容,你检查过下载的数据里面有什么吗?看起来你是对的。下载文件的大小与手动下载的解包文件相同。这是否意味着我下载了更多流量?或者请求为我下载存档,然后解压存档?@user2829863不,你不下载更多,你下载存档数据,然后请求模块为你解压。看起来你是对的。下载文件的大小与手动下载的解包文件相同。这是否意味着我下载了更多流量?或者请求为我下载存档,然后解包存档?@user2829863不,您不需要下载更多,您需要下载存档数据,但请求模块会为您解包。