Pythonでメモリ内の* .bz2ファイルを解凍するには? bz2 ファイルは csv ファイルから取得されます。
以下のコードを使用してメモリ内で解凍しますが、動作しますが、csv ファイルのファイル名や作成者名などのダーティ データをもたらします。それを処理するための他の良い方法はありますか?
#!/usr/bin/python
# -*- coding: utf-8 -*-
import StringIO
import bz2
with open("/app/tmp/res_test.tar.bz2", "rb") as f:
content = f.read()
compressedFile = StringIO.StringIO(content)
decompressedFile = bz2.decompress(compressedFile.buf)
compressedFile.seek(0)
with open("/app/tmp/decompress_test", 'w') as outfile:
outfile.write(decompressedFile)
私はこの質問を見つけました、それはgzipにありますが、私のデータはbz2形式です。指示どおりに実行しようとしましたが、bz2はこの方法では処理できなかったようです.
編集:
@metatoasterまたは上記のコードの答えに関係なく、どちらも最終的な解凍ファイルにさらにダーティデータをもたらします。例: 私の元のデータは、res_test.csv という名前の csv 形式で以下に添付されています。
次に、ファイルがあるディレクトリにcdして圧縮しtar -cjf res_test.tar.bz2 res_test.csv
、圧縮ファイルres_test.tar.bz2を取得します。このファイルは、インターネットから取得するbz2データをシミュレートでき、キャッシュせずにメモリで解凍したい最初にディスクに入れますが、取得するのは以下のデータであり、ダーティデータが多すぎます:
データはまだそこにありますが、ノイズに沈んでいます。元のデータとまったく同じ純粋なデータに解凍して、あまりにも多くのノイズから実際のデータを抽出するのではなく、解凍することは可能ですか?