zlib モジュールで提供されているデータ圧縮は、GNU の
圧縮プログラム gzip のものと互換性があります。
そこで、gzip モジュールでは、gzip 形式の
ファイルを読み書きするための GzipFile クラスを提供します。
このクラスのオブジェクトは自動的にデータを圧縮または解凍するので、
通常のファイルオブジェクトのように見えます。
gzip や gunzip プログラムで解凍できる、
compress や pack による他の形式の圧縮ファイルは
このモジュールではサポートされていないので注意してください。
このモジュールでは以下の項目を定義しています:
| [filename[, mode[, compresslevel[, fileobj]]]]) |
クラスの新しいインスタンスは、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() メソッドを使って 書き込んだデータの入っているメモリバッファを取得することができます。
| filename[, mode[, compresslevel]]) |
GzipFile(filename,
mode, compresslevel) の短縮形です。
引数 filename は必須です。デフォルトで mode は'rb' に、
compresslevel は 9 に設定されています。
参考資料: