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

时间:2015-02-22 02:38:37

标签: python csv file-io compression

我有一个巨大的文件,我们称之为 one-csv-file.xz 。它是一个XZ压缩的CSV文件。

如何在不先将文件解压缩到磁盘的情况下打开并解析文件?如果文件是100 GB,该怎么办?当然,Python无法一次性将所有这些内容读入内存。它会翻页或耗尽内存吗?

2 个答案:

答案 0 :(得分:3)

您可以遍历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)

答案 1 :(得分:1)

您可以逐步解压缩。见Compression using the LZMA Algorithm。您创建一个LZMADecompressor对象,然后使用decompress方法和连续的压缩数据块来获取未压缩数据的连续块。