Joh*_*aFe 7 c python compression zlib
我有一个用zlib的deflate()函数压缩的文件的第一个连续的2/3rds.最后1/3在传输中丢失了.原始未压缩文件为600KB.
发送器多次调用Deflate,同时将原始文件切割为2KB的块大小,并在传递Z_FINISH时将Z_NO_FLUSH传递给文件末尾.生成的完整压缩文件已传输,但如所述部分丢失.
是否有可能恢复原始文件的一部分?如果是的话,有什么建议吗?
我正在使用ZLIB的普通C实现和/或ZLIB的Python 2.7实现.
Mar*_*ler 14
虽然我不懂python,但我设法让它工作:
#!/usr/bin/python
import sys
import zlib
f = open(sys.argv[1], "rb")
g = open(sys.argv[2], "wb")
z = zlib.decompressobj()
while True:
buf = z.unconsumed_tail
if buf == "":
buf = f.read(8192)
if buf == "":
break
got = z.decompress(buf)
if got == "":
break
g.write(got)
Run Code Online (Sandbox Code Playgroud)
这应该从您的部分zlib文件中提取所有可用的内容.