我目前正在开展一项涉及Twitter数据的第三年项目。该部门为我提供了几个月的Twitter的.lzo。最小的是4.9gb,当解压缩时是29gb所以我试图打开文件并阅读我要去的地方。这是可能的还是我需要解压缩并以这种方式处理数据?
编辑:尝试逐行读取并解压缩读取行
更新:找到解决方案 - 阅读lzop -dc的STDOUT就像魅力一样
答案 0 :(得分:7)
如何使用-c
开关在子流程中启动lzop
binary,然后逐行读取STDOUT ?
答案 1 :(得分:4)
我只知道一个带有Python的LZO库 - https://github.com/jd-boyd/python-lzo,它需要完全解压缩(此外 - 它解压缩内存中的内容)。
所以我认为在使用文件之前你需要解压缩文件。
答案 2 :(得分:2)
我知道这是一个非常古老的问题,答案非常好。我遇到了一个samilar问题,谷歌把我带到了这里。
我只是写下我对lzo压缩和lzop程序的经验。希望我能帮助像我这样的人遇到同样的问题。我写了一个简单的python模块来处理lzo文件,你可以在https://github.com/ir193/python-lzo/
找到它关于问题,读取lzo压缩文件(不解压缩整个文件)可以通过一次读取一个块来完成。 lzo文件被分成几个块,并且块的最大大小约为几MB。在我的模块中,您只需使用read(4096)左右。
实际上* .lzo是由lzop创建的,与另一个答案(https://github.com/jd-boyd/python-lzo)提供的python-lzo没什么关系。此模块用于压缩/解压缩字符串,不处理lzop文件头和校验和。如果你想打开一些存在的lzo文件,请不要使用它。