使用 python 请求下载 *.gz 压缩文件会损坏它

2023-12-07

我使用此代码(它只是一部分)来下载 *.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()

下载后,文件的大小是我通过单击“另存为”下载文件时的两倍。并且该文件已损坏。 该文件的链接是:http://www.zsrcpod.aviales.ru/modistlm/archive/tlm/geo/00000/28325/terra_77835_20140806_060059.geo.hdf.gz

文件需要登录名和密码,因此我添加了点击链接时看到的屏幕截图:https://i.stack.imgur.com/DGqtS.jpg

看起来像是设置了一些选项来将此存档定义为文本。

文件头是:

{'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 requests 库正确下载该文件?


看起来像requests自动为您解压缩内容。看here

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python 请求下载 *.gz 压缩文件会损坏它 的相关文章

随机推荐

  • 轮询 I/O (MIPS)

    我正在尝试在 MIPS 中编写一个程序 该程序使用轮询从键盘读取字符 然后使用内置键盘和显示器 MMIO 模拟器显示它 不幸的是 我无法理解所使用的寄存器和控制位背后的概念 但一直试图从在线示例中找出答案 这是我到目前为止所写的内容 dat
  • 使用套接字通过 Tcp/IP 发送消息

    我正在尝试在客户端 服务器之间发送数据 数据看起来像 typedef Struct Message int id int message length char message str message 我在尝试着Write and Read
  • 当用户滚动离开时如何暂停 YouTube 嵌入

    我一直在尝试寻求帮助 以便在用户滚动离开时让视频暂停 我已经能够找到 html5 视频的帮助 但现在我还需要知道如何使用 youtube API 来实现同样的目的 我嵌入 YouTube 的 html 结构如下 div class ytub
  • HTML5 画布图像上的插图阴影

    我以前见过这个问题 但给出的答案是针对通过路径绘制的画布图像 但是我正在绘制图像 是否有可能创建一个inset shadow context shadowOffsetX 0 context shadowOffsetY 0 context s
  • 如何在不移动其他元素的情况下放大div

    我怎样才能停止这个 div 将所有元素移动到您选择特定价格的位置下方 要了解我在说什么 请查看此链接 查看价格表样式3在其下方 您可以看到 当您选择某个价格表时 下面的所有元素都会因弹出而移动 我希望能够使用此功能 但当然不能移动下面的所有
  • 多个单通道矩阵转换为单个多通道矩阵

    我正在使用带有矩阵的 opencv c api 我有 4 个单通道 Mat 我想将其合并为一个 4 通道矩阵 它基本上是我在 4 个矩阵中拥有的 rgba 通道 并且想要组合成一个 rgba 图像 矩阵 谁知道该怎么做 您可以使用简历 合并
  • DQL 选择具有一列 MAX 值的每一行

    使用 Symfony 2 和 Doctrine 我正在寻找一种方法来选择特定列中具有最大值的每一行 现在 我正在两个查询中执行此操作 一种获取表中列的最大值 然后我选择具有该值的行 我确信这可以通过一个查询来完成 搜索中 我发现了这个答案
  • 如何在 C# 中更改组合框的外观

    我尝试在 xaml 中将 ComboBox 背景 前景 borderbrush 设置为蓝色只是为了测试 但它仍然保持丑陋的灰色 我也尝试过使用资源字典 但它不想改变 这是我使用组合框的 XAML
  • Haskell - 在模式匹配中使用常量

    假设我有以下代码 文本在 lt gt 是简写 实际上不是代码的一部分 data A
  • matlab导入多张图像

    我有一组连续命名的 100 张 jpg 图像 我想将它们相加以获得单个图像 我已经看到答案了here 但它不跟我一起运行 发生了什么事 这是代码 im imread C Documents and Settings 1026175117 1
  • 如何从文件中读取位?

    我知道如何读取字节 x read number of bytes 但是如何读取 Python 中的位呢 我必须从二进制文件中仅读取 5 位 而不是 8 位 1 字节 有什么想法或方法吗 Python 一次只能读取一个字节 您需要读取一个完整
  • 无需按 Control 键即可选择多行

    我有一个网格视图 可以通过按控制键选择多行 是否可以在不按控制键的情况下实现相同的目的 由于 net 默认操作也会更新slectedrows你的datagridview你需要有一个数组来保留旧的选择 DataGridViewRow old
  • Fragment 和 FragmentActivity 有什么区别?

    我的问题是除了明显的继承差异之外 两者之间的主要区别是什么Fragment and FragmentActivity 每个类别最适合什么场景 我试图了解为什么这两个类别存在 A Fragment是一个的一部分Activity 其中有 它自己
  • 按图像路径在数据库中的 RDLC 报告上显示图像

    图像路径存储在SQL Server 2008数据库中 在我的 RDLC 报告上 我有一个图像字段 我已设置此字段以从数据库中的数据库列获取图像路径 我还在报告查看器中将 EnableExternalImages 属性设置为 true 我不知
  • UIScrollView 滚动时取消 UIPageViewController 手势

    我有一个UIPageViewController它负责翻我的 书 的页面 然而 每一本书的页面都是一个ViewController with a UIScrollView as a subview The UIScrollView只能垂直滚
  • 使用 PHP 克隆 + 重命名文件

    如何使用 php ini 克隆并重命名文件 我需要采取 拇指 123 jpg Copy it 将其重命名为thumb 456 jpg 我可以很好地进行重命名rename 这是我没有得到的复制 copy thumb 123 jpg thumb
  • JQuery Slider,如何更改“步长”大小

    是否可以使用 JQuery 滑块 范围滑块 双滑块 来获得非线性 不一致的 步长 大小 值 我想要水平滑块看起来像 0 500 750 1000 1250 1500 2000 2500 75000 100000 例如 我想要以下 JQuer
  • Flink 应用程序的检查点大小持续增长

    我有这样的管道 env addSource kafkaConsumer name source keyBy value gt value f0 window EventTimeSessionWindows withGap Time seco
  • 如何将 git 存储库的副本(存档,而不是克隆)连接到其远程?

    我想知道如何将 git 存储库的副本 存档 而不是克隆 与其远程存储库连接并同步 背景 我有一个本地和远程存储库 我使用 git archive 压缩本地存储库 然后将其复制到服务器 git archive format tar HEAD
  • 使用 python 请求下载 *.gz 压缩文件会损坏它

    我使用此代码 它只是一部分 来下载 gz 存档 with requests session as s s post login to site URL payload load s get scene stream True with op