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

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

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

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

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

gzip ファイルヘッダ中には、ファイルが解凍されたときの元の ファイル名を収めることができますが、fileobjNone でない場合、引数 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 として渡し、(GzipFileclose() した後に) StringIO オブジェクトの getvalue() メソッドを使って 書き込んだデータの入っているメモリバッファを取得することができます。

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

参考:

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