\section{Built-in Module \sectcode{gzip}}
\label{module-gzip}
\bimodindex{gzip}

The data compression provided by the \code{zlib} module is compatible
with that used by the GNU compression program \file{gzip}.
Accordingly, the \code{gzip} module provides the \code{GzipFile} class
to read and write \file{gzip}-format files, automatically compressing
or decompressing the data so it looks like an ordinary file object.

\code{GzipFile} objects simulate most of the methods of a file
object, though it's not possible to use the \code{seek()} and
\code{tell()} methods to access the file randomly.

\renewcommand{\indexsubitem}{(in module gzip)}
\begin{funcdesc}{open}{fileobj\optional{\, filename\optional{\, mode\, compresslevel}}}
  Returns a new \code{GzipFile} object on top of \var{fileobj}, which
  can be a regular file, a \code{StringIO} object, or any object which
  simulates a file.

  The \file{gzip} file format includes the original filename of the
  uncompressed file; when opening a \code{GzipFile} object for
  writing, it can be set by the \var{filename} argument.  The default
  value is \code{"GzippedFile"}.

  \var{mode} can be either \code{'r'} or \code{'w'} depending on
  whether the file will be read or written.  \var{compresslevel} is an
  integer from 1 to 9 controlling the level of compression; 1 is
  fastest and produces the least compression, and 9 is slowest and
  produces the most compression.  The default value of
  \var{compresslevel} is 9.

  Calling a \code{GzipFile} object's \code{close()} method does not
  close \var{fileobj}, since you might wish to append more material
  after the compressed data.  This also allows you to pass a
  \code{StringIO} object opened for writing as \var{fileobj}, and
  retrieve the resulting memory buffer using the \code{StringIO}
  object's \code{getvalue()} method.
\end{funcdesc}

\begin{seealso}
\seemodule{zlib}{the basic data compression module}
\end{seealso}

