在Python中逐行迭代处理一个大的.xz文件

7
我有一个很大的.xz文件(几个GB),里面全是纯文本。我想处理这些文本以创建自定义数据集。由于文件太大,我想逐行读取。有人知道如何做吗?
我已经尝试过这个如何在内存中打开和读取LZMA文件,但它不起作用。
编辑:我得到了这个错误“ascii”编解码器无法解码位置0的字节0xfd:序数不在范围内(128)
来自链接的for line in uncompressed:
编辑2:我的代码(使用python 3.5)
with open(filename) as compressed:
    with lzma.LZMAFile(compressed) as uncompressed:
        for line in uncompressed:
            print(line)

它为什么不起作用? - Jon Clements
寻求帮助调试的问题应包括一个 [mcve]。 - Håken Lid
我会编辑这个问题。 - Andrej Hucko
我们能看到您使用的代码而不仅仅是错误信息吗?您使用的Python版本是什么? - Ziyad Edher
我已经编辑了这个问题。 - Andrej Hucko
1个回答

8

几周前我也遇到了同样的问题。这个代码片段对我很有用:

import lzma
with lzma.open('filename.xz', mode='rt') as file:
    for line in file:
       print(line)

这假设压缩文件中的文本数据已经使用utf-8编码(对于我的数据是这样的)。在函数lzma.open()中有一个encoding参数,如果需要的话,可以设置另一个编码。
编辑(在你自己的编辑之后):尝试在lzma.open()中强制使用encoding='utf-8'

3
谢谢你!我使用了你提供的编码参数,代码运行成功了。 :) - Andrej Hucko

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