在python中逐行迭代一个大的.xz文件

And*_*cko 6 python lzma xz

我有一个很大的 .xz 文件(几 GB)。它充满了纯文本。我想处理文本以创建自定义数据集。我想一行一行地阅读它,因为它太大了。有人知道怎么做吗?

我已经尝试过 如何在内存中打开和读取 LZMA 文件,但它不起作用。

编辑:我收到此错误“ascii”编解码器无法解码位置 0 中的字节 0xfd:序号不在范围内(128)

for line in uncompressed:从链接就行

EDIT2:我的代码(使用 python 3.5)

with open(filename) as compressed:
with lzma.LZMAFile(compressed) as uncompressed:
    for line in uncompressed:
        print(line)
Run Code Online (Sandbox Code Playgroud)

sci*_*ics 8

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

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

这假设压缩文件中的文本数据以utf-8编码(我的数据就是这种情况)。encoding函数中有一个参数lzma.open()允许您根据需要设置另一种编码

编辑(在您自己编辑之后):尝试强制encoding='utf-8'输入lmza.open()

  • 谢谢男人!我将您的代码与 encoding 参数一起使用,并且它起作用了。:) (3认同)