我正在尝试通过python脚本从Web服务器读取gz文件。源文件的大小为60Mb或更多。我不想等待读取整个文件以解压缩并读取内容。相反,当我收到几个字节时,我想要解压缩信息。 我试过这样做,但是我被“CRC check failed”之类的错误所关闭。我正在使用gzip模块,因为服务器将内容编码作为“gzip”返回。我也试过zlib的运气,但没有结果。 我已经看到Mozilla Firefox或谷歌Chrome没有任何问题。我看了HTTP标头,我发现内容没有一次全部收到,但浏览器能够在收到时显示解压缩的部分数据。他们是如何做到的呢 ?任何帮助表示赞赏。
答案 0 :(得分:1)
将zlib.decompressobj
与wbits
参数一起使用31.然后deobj.decompress()
将允许您一次解压缩gzip输入。
31并不意味着31位。它实际上是15 + 16,其中15表示2 ^ 15字节的滑动窗口的最大大小,16是请求gzip格式解码的选项。如果不添加16,将解码zlib格式,这将拒绝gzip输入。