[英]Decompressing bz2 files on Windows
我正在尝试使用以下代码片段解压缩 bz2 文件,该文件在不同地方提供:
bz2_data = bz2.BZ2File(DATA_FILE+".bz2").read()
open(DATA_FILE, 'wb').write(bz2_data)
但是,我得到的文件比我预期的要小得多。
当我使用 7z GUI 提取文件时,我收到一个大小为 248MB 的文件。 但是,使用上面的代码,我得到的文件是 879kb。
当我读取提取的 XML 文件时,我可以看到文件的其余部分丢失了,正如我所料。
我在 Windows 机器上运行 anaconda,据了解bz2在文件实际结束之前到达 EOF。
如果它是一个多流文件,您必须将mode
设置为"r"
,否则它将静默失败(例如,按原样输出压缩数据)。
这应该做你想做的:
with open(out_file_path) as out_file, BZ2File(bz2_file_path, "r") as bz2_file:
for data in iter(lambda: bz2_file.read(100 * 1024), b""):
out_file.write(data)
从文档:
如果 mode 为 'r',则输入文件可能是多个压缩流的串联。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.