12.2 gzip -- gzip ファイルのサポート

zlib モジュールで提供されているデータ圧縮は、GNU の 圧縮プログラム gzip のものと互換性があります。 そこで、gzip モジュールでは、gzip 形式の ファイルを読み書きするための GzipFile クラスを提供します。 このクラスのオブジェクトは自動的にデータを圧縮または解凍するので、 通常のファイルオブジェクトのように見えます。 gzip や gunzip プログラムで解凍できる、 compress や pack による他の形式の圧縮ファイルは このモジュールではサポートされていないので注意してください。

このモジュールでは以下の項目を定義しています:

クラス GzipFile( [filename[, mode[, compresslevel[, fileobj]]]])
GzipFile クラスのコンストラクタです。GzipFile オブジェクト は readinto() と truncate() メソッドを除くほとんどの ファイルオブジェクトのメソッドをシミュレートします。 少なくとも fileobj および filename は有効な値でなければ なりません。

クラスの新しいインスタンスは、fileobj に基づいて作成 されます。fileobj は通常のファイル、StringIO オブジェクト、そしてその他ファイルをシミュレートできる オブジェクトでかまいません。値はデフォルトでは None で、 ファイルオブジェクトを生成するために filename を開きます。

gzip ファイルヘッダ中には、ファイルが解凍されたときの元の ファイル名を収めることができますが、fileobj が None でない場合、引数 filename がファイル名として認識できる文字列 であれば、filename はファイルヘッダに収めるためだけに使われ ます。そうでない場合(この値はデフォルトでは空文字列です)、 元のファイル名はヘッダに収められません。

mode 引数は、ファイルを読み出すのか、書き込むのかによって、 'r', 'rb', 'a', 'ab', 'w', そして 'wb', のいずれかになります。fileobj の ファイルモードが認識可能な場合、mode はデフォルトで fileobj のモードと同じになります。そうでない場合、 デフォルトのモードは 'rb' です。'b' フラグがついて いなくても、ファイルがバイナリモードで開かれることを保証するために 'b' フラグが追加されます。これはプラットフォーム間での移植性の ためです。

compresslevel 引数は 1 から 9 までの整数で、 圧縮のレベルを制御します。1 は最も高速で最小限の圧縮しか 行いません。9 は最も低速ですが、最大限の圧縮を行います。 デフォルトの値は 9 です。

圧縮したデータの後ろにさらに何か追記したい場合もあるので、 GzipFile オブジェクトの close() メソッド呼び出し は fileobj をクローズしません。この機能によって、書き 込みのためにオープンした StringIO オブジェクトを fileobj として渡し、(GzipFile を close() した後に) StringIO オブジェクトの getvalue() メソッドを使って 書き込んだデータの入っているメモリバッファを取得することができます。

open( filename[, mode[, compresslevel]])
GzipFile(filename, mode, compresslevel) の短縮形です。 引数 filename は必須です。デフォルトで mode は'rb' に、 compresslevel は 9 に設定されています。

参考:

zlib:モジュール
gzip ファイル形式のサポートを行うために必要な 基本ライブラリモジュール。.
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。