在python中逐行迭代一个大的.xz文件
Posted
技术标签:
【中文标题】在python中逐行迭代一个大的.xz文件【英文标题】:Iterate a large .xz file line by line in python 【发布时间】: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? 我已经编辑了问题 【参考方案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'
【讨论】:
谢谢伙计!我将您的代码与编码参数一起使用,并且有效。 :)以上是关于在python中逐行迭代一个大的.xz文件的主要内容,如果未能解决你的问题,请参考以下文章