gzip --- gzip 圧縮 & 展開¶
このモジュールは、gzip ファイル形式で使用される DEFLATE アルゴリズム によるバイナリデータの圧縮と展開を可能にします。ワンショットの compress()/decompress() ヘルパーと、基盤となるファイルまたはストリームオブジェクトをラップするストリーミング GzipFile を提供します。
注釈
このモジュールの関数の代わりに deflate.DeflateIO を使用することをお勧めします。圧縮データをファイル、ソケット、ストリームに対して読み書きする際に便利でメモリ効率の高い、圧縮と展開のストリーミングインターフェースを提供します。
利用可否:
このモジュールは、
deflateモジュールがすでに提供している機能と重複するため、デフォルトでは OpenMV Cam には含まれていません。micropython-lib(ソース)からコピーをインストール(またはカスタムファームウェアにフリーズ)できます。詳細については パッケージ管理 を参照してください。このドキュメントはそのモジュールについて説明します。
圧縮は、組み込みの
deflateモジュールで圧縮が利用可能な場合にのみ利用できます。つまり、STM32 ベースの OpenMV Cam では利用できません(上記の利用可否に関する注記を参照)。
関数¶
クラス¶
- class gzip.GzipFile(*, fileobj, mode: str)¶
このクラスは、ファイル、ソケット、ストリーム(
io.BytesIOを含む)などの任意の ストリームライク オブジェクトである fileobj をラップするために使用できます。これ自体がストリームであり、標準の read/readinto/write/close メソッドを実装しています。mode 引数が
"rb"の場合、GzipFile インスタンスからの読み取りは基盤となるストリーム内のデータを展開し、展開されたデータを返します。圧縮サポートが有効な場合、mode 引数を
"wb"に設定でき、GzipFile インスタンスへの書き込みは圧縮されて基盤となるストリームに書き込まれます。デフォルトでは、GzipFile クラスは、チェックサムを含むヘッダーとフッター、および 512 バイトのウィンドウサイズを含む gzip ファイル形式を使用してデータを読み書きします。
file、compresslevel、mtime 引数はサポートされていません。fileobj と mode は常にキーワード引数として指定する必要があります。
例¶
gzip.GzipFile の典型的なユースケースは、ストレージから圧縮ファイルを読み書きすることです:
import gzip
# Reading:
with open("data.gz", "rb") as f:
with gzip.GzipFile(fileobj=f, mode="rb") as g:
# Use g.read(), g.readinto(), etc.
# Same, but using gzip.open:
with gzip.open("data.gz", "rb") as f:
# Use f.read(), f.readinto(), etc.
# Writing:
with open("data.gz", "wb") as f:
with gzip.GzipFile(fileobj=f, mode="wb") as g:
# Use g.write(...) etc
# Same, but using gzip.open:
with gzip.open("data.gz", "wb") as f:
# Use f.write(...) etc
# Write a dictionary as JSON in gzip format, with a
# small (64 byte) window size.
config = { ... }
with gzip.open("config.gz", "wb") as f:
json.dump(config, f)
gzip ソースの取り扱いとウィンドウサイズの選択に関するガイダンスについては、deflate ドキュメントの末尾 の注記を参照してください。