gzip
-- gzip 圧縮器 & 展開器¶
このモジュールは、該当する CPython モジュールのサブセットを実装しています。
詳しくはオリジナルの CPython ドキュメンテーションを参照してください: gzip
.
このモジュールは、gzip ファイルフォーマットで使われている DEFLATE アルゴリズム によりバイナリデータの圧縮と展開を可能にします。
注釈
deflate.DeflateIO
を、このモジュールの関数の代わりに使うことをお勧めします。このクラスは、ファイル、ソケット、ストリームに対し、圧縮したデータを読み書きするのに便利で、メモリ効率が良い圧縮/展開ストリーミングインターフェースを提供します。
利用可能性:
このモジュールは、公式の MicroPython ファームウェアリリースにはデフォルトで含まれていません。これは "
deflate
モジュールで利用可能な機能と重複しているためです。このモジュールのコピーは micropython-lib (ソース)からインストール(または凍結)できます。詳細については パッケージ管理 を参照してください。このドキュメントはそのモジュールについて説明しています。
圧縮サポートは、組込みの
deflate
モジュールで圧縮サポートが有効になっている場合にのみ利用可能です。
関数¶
- gzip.decompress(data, /)¶
data を bytes オブジェクトに展開します。
- gzip.compress(data, /)¶
data を bytes オブジェクトに圧縮します。
クラス¶
- class gzip.GzipFile(*, fileobj, mode)¶
このクラスは、ファイル、ソケット、ストリーム(
io.BytesIO
を含む)などの ストリームライク なオブジェクトである fileobj をラップするために使えます。このクラス自体もストリームであり、標準の read/readinto/write/close メソッドを実装しています。mode 引数が
"rb"
の場合、GzipFile インスタンスから読み込むと、基になるストリームのデータを展開し、展開済みデータを返します。圧縮サポートが有効になっている場合、 mode 引数を
"wb"
に設定でき、GzipFile インスタンスへの書き出しは圧縮され、基になるストリームに書き出されます。デフォルトで、GzipFile クラスは gzip ファイルフォーマットを使ってデータを読み書きします。これにはチェックサムとウィンドウサイズが512バイトのヘッダーとフッターが含まれます。
file, compresslevel, mtime 引数はサポートされていません。 fileobj と mode は常にキーワード引数として指定する必要があります。
サンプルコード¶
gzip.GzipFile
のよくある使い方は、ストレージから圧縮されたファイルを読み書きすることです:
import gzip
# 読込み:
with open("data.gz", "rb") as f:
with gzip.GzipFile(fileobj=f, mode="rb") as g:
# g.read(), g.readinto() などを使用。
# 同じ。ただし gzip.open を利用:
with gzip.open("data.gz", "rb") as f:
# Use f.read(), f.readinto(), etc.
# 書出し:
with open("data.gz", "wb") as f:
with gzip.GzipFile(fileobj=f, mode="wb") as g:
# Use g.write(...) etc
# 同じ。ただし gzip.open を利用:
with gzip.open("data.gz", "wb") as f:
# Use f.write(...) etc
# 辞書を JSON として gzip フォーマットで書き出し。
# ウィンドウサイズは small (64 byte)。
config = { ... }
with gzip.open("config.gz", "wb") as f:
json.dump(config, f)
gzip のソースとウィンドウサイズの選択に関する指針については、 deflate ドキュメントの最後 にある注釈を参照してください。