【问题标题】:Detect end of Deflate stream in Python在 Python 中检测 Deflate 流的结束
【发布时间】:2021-08-06 10:53:23
【问题描述】:
在读取包含 Deflate 流的字节流时,是否可以检测到 Delfate 流的结束位置?如果是这样:如何? (最好是 Python)。
我看到Decompress.unused_data,看起来可能涉及,但我不太确定如何使用它。
上下文:编写流式解压缩实现,其中压缩数据的大小,即每个压缩文件的 Deflate 流的大小并不总是预先知道。
【问题讨论】:
标签:
python
python-3.x
stream
zip
deflate
【解决方案1】:
唯一的方法是解码整个 deflate 流。 deflate 格式是自动终止的,因此它会告诉您何时结束。没有神奇的位或字节序列可供您搜索以找到结尾。
确实,在 Python 中,您可以在 zlib 模块中使用 decompressobj 来执行此操作,检查 unused_data 直到它非空。如果是,则 deflate 流在 unused_data 返回之前的字节处终止。