如何在内存中打开和读取LZMA文件

8
我有一个巨大的文件,我们称之为 one-csv-file.xz。它是一个XZ压缩的CSV文件。
我如何在不先将其解压到磁盘上的情况下打开并遍历文件?如果文件大小达到100GB呢?Python当然不能一次性读取所有内容到内存中。会分页还是会耗尽内存?
2个回答

7
您可以遍历一个 LZMAFile 对象。
import lzma  # python 3, try lzmaffi in python 2
with open('one-csv-file.xz') as compressed:
    with lzma.LZMAFile(compressed) as uncompressed:
        for line in uncompressed:
            do_stuff_with(line)

2
请参考此处以处理不是ASCII编码的文本。 - user1016274
是的,对我来说确实起作用的也是@user1016274提供的链接。 - Geoffrey Anderson

3
你可以逐步解压缩。请参阅“使用LZMA算法进行压缩”。您需要创建一个“LZMADecompressor”对象,然后使用“decompress”方法来获取连续的未压缩数据块的连续压缩数据块。详情请见此处

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接