このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

gzip -- gzip 圧縮器 & 展開器

このモジュールは、該当する CPython モジュールのサブセットを実装しています。 詳しくはオリジナルの CPython ドキュメンテーションを参照してください: gzip.

このモジュールは、gzip ファイルフォーマットで使われている DEFLATE アルゴリズム によりバイナリデータの圧縮と展開を可能にします。

注釈

deflate.DeflateIO を、このモジュールの関数の代わりに使うことをお勧めします。このクラスは、ファイル、ソケット、ストリームに対し、圧縮したデータを読み書きするのに便利で、メモリ効率が良い圧縮/展開ストリーミングインターフェースを提供します。

利用可能性:

  • このモジュールは、公式の MicroPython ファームウェアリリースにはデフォルトで含まれていません。これは "deflate モジュールで利用可能な機能と重複しているためです。

  • このモジュールのコピーは micropython-lib (ソース)からインストール(または凍結)できます。詳細については パッケージ管理 を参照してください。このドキュメントはそのモジュールについて説明しています。

  • 圧縮サポートは、組込みの deflate モジュールで圧縮サポートが有効になっている場合にのみ利用可能です。

関数

gzip.open(filename, mode, /)

組込みの open() をラップしたもので、GzipFile インスタンスを返します。

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 引数はサポートされていません。 fileobjmode は常にキーワード引数として指定する必要があります。

サンプルコード

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 ドキュメントの最後 にある注釈を参照してください。