\section{\module{gzip} ---
         \program{gzip} ファイルのサポート}

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

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

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

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

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

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

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

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

\begin{funcdesc}{open}{filename\optional{, mode\optional{, compresslevel}}}
\code{GzipFile(\var{filename},}
\code{\var{mode},} \code{\var{compresslevel})} の短縮形です。
引数 \var{filename} は必須です。デフォルトで \var{mode} は\code{'rb'} に、
\var{compresslevel} は \code{9} に設定されています。
\end{funcdesc}

\begin{seealso}
  \seemodule{zlib}{\program{gzip} ファイル形式のサポートを行うために必要な
	基本ライブラリモジュール。}
\end{seealso}
