在Python中打开一个lzo文件,而无需解压缩该文件

4
我目前正在从Twitter收集数据的三年级项目中工作。部门提供了一个月的Twitter数据,格式为.lzo。最小的文件大小为4.9GB,解压后为29GB,所以我正在尝试边读取文件边解压缩。这样做可能吗?或者我需要先解压再处理数据?
编辑:尝试逐行读取并解压读取的行。
更新:找到了一个解决方案——读取lzop -dc的标准输出非常好用。

你尝试过什么吗? - Anders R. Bystrup
尝试逐行读取并解压字符串。 - DrugCrazed
3个回答

7
如何通过使用-c开关在子进程中启动lzop二进制文件,然后逐行读取其STDOUT?

我有一种感觉,我对Python的不了解会在这里稍微阻碍一下... - DrugCrazed

4
我知道Python中唯一一个与LZO相关的库 - https://github.com/jd-boyd/python-lzo,但它需要完全解压(而且会在内存中解压内容)。
所以我认为您需要在使用文件之前对其进行解压。

2

我知道这是一个非常老的问题,答案非常好。我遇到了类似的问题,谷歌把我带到了这里。

我只是记录了一下我的lzo压缩和lzop程序的经验。希望我能帮助像我一样遇到同样问题的人。我编写了一个简单的Python模块来处理lzo文件,你可以在https://github.com/ir193/python-lzo/上找到它。

关于问题,可以通过一次读取一个块来在原地读取lzo压缩文件(而不是解压整个文件)。lzo文件被分成几个块,每个块的最大大小约为几MB。在我的模块中,你只需要使用read(4096)或类似的方法。

实际上,*.lzo是由lzop创建的,并且与另一个答案提供的python-lzo(https://github.com/jd-boyd/python-lzo)几乎没有关系。该模块用于压缩/解压缩字符串,而不是处理lzop文件头和校验和。如果你想打开一些现有的lzo文件,请不要使用它。


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