12.2. "gzip" — Support pour les fichiers **gzip**
*************************************************

**Code source :** Lib/gzip.py

======================================================================

Ce module fournit une interface simple pour compresser et décompresser
des fichiers tout comme le font les programmes GNU **gzip** et
**gunzip**.

La compression de données est fournie par le module "zlib".

The "gzip" module provides the "GzipFile" class which is modeled after
Python’s File Object. The "GzipFile" class reads and writes
**gzip**-format files, automatically compressing or decompressing the
data so that it looks like an ordinary file object.

Notez que les formats de fichier supplémentaires qui peuvent être
décompressés par les programmes **gzip** et **gunzip**, comme ceux
produits par le programmes **compress** et **pack**, ne sont pas gérés
par ce module.

Le module définit les éléments suivants :

class gzip.GzipFile([filename[, mode[, compresslevel[, fileobj[, mtime]]]]])

   Constructor for the "GzipFile" class, which simulates most of the
   methods of a file object, with the exception of the "readinto()"
   and "truncate()" methods.  At least one of *fileobj* and *filename*
   must be given a non-trivial value.

   The new class instance is based on *fileobj*, which can be a
   regular file, a "StringIO" object, or any other object which
   simulates a file.  It defaults to "None", in which case *filename*
   is opened to provide a file object.

   Quand *fileobj* n’est pas à "None", l’argument *filename* est
   uniquement utilisé pour être inclus dans l’entête  du fichier
   **gzip**, qui peut inclure le nom original du fichier décompressé.
   Il est par défaut défini avec le nom de fichier de *fileobj* s’il
   est discernable, sinon il est par défaut défini à une chaîne de
   caractères vide et dans ce cas le nom du fichier orignal n’est pas
   inclus dans l’entête.

   The *mode* argument can be any of "'r'", "'rb'", "'a'", "'ab'",
   "'w'", or "'wb'", depending on whether the file will be read or
   written.  The default is the mode of *fileobj* if discernible;
   otherwise, the default is "'rb'". If not given, the “b” flag will
   be added to the mode to ensure the file is opened in binary mode
   for cross-platform portability.

   L’argument *compresslevel* est un entier de "0" à "9" contrôlant le
   niveau de compression,``1`` est le plus rapide et produit la
   compression la plus faible et "9" est le plus rapide et produit la
   compression la plus élevée. "0" désactive la compression. Par
   défaut à "9".

   The *mtime* argument is an optional numeric timestamp to be written
   to the stream when compressing.  All **gzip** compressed streams
   are required to contain a timestamp.  If omitted or "None", the
   current time is used.  This module ignores the timestamp when
   decompressing; however, some programs, such as **gunzip**, make use
   of it. The format of the timestamp is the same as that of the
   return value of "time.time()" and of the "st_mtime" attribute of
   the object returned by "os.stat()".

   Calling a "GzipFile" object’s "close()" method does not close
   *fileobj*, since you might wish to append more material after the
   compressed data.  This also allows you to pass a "StringIO" object
   opened for writing as *fileobj*, and retrieve the resulting memory
   buffer using the "StringIO" object’s "getvalue()" method.

   "GzipFile" supports iteration and the "with" statement.

   Modifié dans la version 2.7: Support for the "with" statement was
   added.

   Modifié dans la version 2.7: Support for zero-padded files was
   added.

   Nouveau dans la version 2.7: The *mtime* argument.

gzip.open(filename[, mode[, compresslevel]])

   This is a shorthand for "GzipFile(filename," "mode,"
   "compresslevel)". The *filename* argument is required; *mode*
   defaults to "'rb'" and *compresslevel* defaults to "9".


12.2.1. Exemples d’utilisation
==============================

Exemple montrant comment lire un fichier compressé :

   import gzip
   with gzip.open('file.txt.gz', 'rb') as f:
       file_content = f.read()

Exemple montrant comment créer un fichier GZIP :

   import gzip
   content = "Lots of content here"
   with gzip.open('file.txt.gz', 'wb') as f:
       f.write(content)

Exemple montrant comment compresser dans un GZIP un fichier existant :

   import gzip
   import shutil
   with open('file.txt', 'rb') as f_in, gzip.open('file.txt.gz', 'wb') as f_out:
       shutil.copyfileobj(f_in, f_out)

Voir aussi:

  Module "zlib"
     Le module de compression de données de base nécessaire pour gérer
     le format de fichier **gzip**.
