Pythonの標準ライブラリには、データの圧縮と解凍を行うためのzlib
モジュールがあります。この記事では、Pythonとzlibを使ってデータの圧縮と解凍を行う方法を紹介します。
zlibを使ったデータの圧縮
Pythonのzlib
モジュールを使ってデータを圧縮するには、compress
関数を使用します。以下にその使用例を示します。
import zlib
data = b'test data\\x00' # 任意のバイナリデータ
compressed = zlib.compress(data)
print(compressed)
このコードは、任意のバイナリデータを圧縮し、その結果を出力します。
zlibを使ったデータの解凍
圧縮したデータを解凍するには、decompress
関数を使用します。以下にその使用例を示します。
import zlib
data = b'test data\\x00' # 任意のバイナリデータ
decompressed = zlib.decompress(zlib.compress(data))
print(decompressed) # b'test data\\x00'
このコードは、先ほど圧縮したデータを解凍し、その結果を出力します。
圧縮オブジェクトと解凍オブジェクト
一度にメモリ上に置けないような大きなデータを圧縮するためには、compressobj
関数を使用して圧縮オブジェクトを作成します。同様に、大きなデータを解凍するためには、decompressobj
関数を使用して解凍オブジェクトを作成します。
import zlib
import io
data_stream = io.BytesIO(b'test data\\x00')
cobj = zlib.compressobj()
compressed = b''
while True:
tmp = data_stream.read(64)
if not tmp:
compressed += cobj.flush()
break
compressed += cobj.compress(tmp)
print(compressed)
このコードは、データストリームからデータを読み込み、そのデータを圧縮します。データがなくなったら、flush
メソッドを呼び出して、圧縮オブジェクトの内部バッファをフラッシュします。
以上がPythonとzlibを使ったデータの圧縮と解凍の基本的な方法です。これらの機能を活用することで、大量のデータを効率的に扱うことが可能になります。.