\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.

\setindexsubitem{(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 an empty string.

  \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}

