私は現在、Twitterからのデータを含む3年目のプロジェクトに取り組んでいます。部門は私に1か月分のTwitterの.lzoを提供してくれました。最小は4.9GBで、解凍すると29 GBになるので、ファイルを開いて読み込もうとしています。これは可能ですか、それともデータを解凍してそのように操作する必要がありますか?
編集:それを1行ずつ読み取り、読み取った行を解凍しようとしました
更新:解決策を見つけました-lzop-dcのSTDOUTを読み取ることは魅力のように機能します
スイッチを使用してサブプロセスでlzop
バイナリを開始し、-c
そのSTDOUTを1行ずつ読み取るのはどうですか?
私はPythonを使用したLZO用のライブラリを1つだけ知っています— https://github.com/jd-boyd/python-lzoそしてそれは完全な解凍を必要とします(さらに—それはメモリ内のコンテンツを解凍します)。
したがって、ファイルを操作する前に、ファイルを解凍する必要があると思います。
これは非常に古い質問であり、答えは本当に良いことを私は知っています。私は同様の問題を提起しました、グーグルは私をここに連れてきました。
lzo圧縮とlzopプログラムに関する私の経験を書き留めます。私のような人が同じ質問に遭遇するのを手伝ってくれることを願っています。そして、lzoファイルを処理するための簡単なPythonモジュールを作成します。これは、https://github.com/ir193/python-lzo/にあります。
質問に関しては、lzo圧縮ファイルを(ファイル全体を解凍せずに)所定の位置で読み取るには、一度に1つのブロックを読み取る必要があります。lzoファイルはサーバーブロックに分割され、サーバーMBについてのブロックの最大サイズがあります。私のモジュールでは、read(4096)などを使用できます。
実際、*。lzoはlzopによって作成され、別の回答( https://github.com/jd-boyd/python-lzo )によって提供されるpython-lzoとはほとんど関係がありません。このモジュールは、文字列の圧縮/解凍に使用され、lzopファイルヘッダーとチェックサムを処理しません。既存のlzoファイルを開きたい場合は使用しないでください。