【问题标题】:Iterate a large .xz file line by line in python在python中逐行迭代一个大的.xz文件
【发布时间】:2018-03-18 12:52:48
【问题描述】:

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

我已经试过了 How to open and read LZMA file in-memory 但它不起作用。

编辑: 我收到此错误“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)

【问题讨论】:

  • 怎么不工作了?
  • 寻求帮助调试的问题应包括minimal reproducible example
  • 我会编辑问题
  • 我们可以看到您正在使用的代码,而不仅仅是错误消息吗?你使用的是什么版本的 Python?
  • 我已经编辑了问题

标签: python lzma xz


【解决方案1】:

几周前我也遇到过同样的问题。这个 sn-p 对我有用:

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

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

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

【讨论】:

  • 谢谢伙计!我将您的代码与编码参数一起使用,并且有效。 :)
猜你喜欢
  • 1970-01-01
  • 2019-09-13
  • 2015-08-20
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 2020-10-16
  • 2019-01-30
  • 1970-01-01
相关资源
最近更新 更多