[PageD'Accueil] [IndexDesTitres] [IndexDesTermes

Manipulation de fichiers ZIP

Module standard zipfile

Zipper un fichier:

   1 import zipfile
   2 f = zipfile.ZipFile('archive.zip','w',zipfile.ZIP_DEFLATED)
   3 f.write('fichier_a_ajouter.dat')
   4 f.close()

Remplcez 'w' par 'a' pour ajouter des fichiers à l'archive zip.

Dézipper tous les fichiers d'une archive zip:

   1 import zipfile
   2 zfile = zipfile.ZipFile('archive.zip','r')
   3 for filename in zfile.namelist():
   4     data = zfile.read(filename)
   5     file = open(filename, 'w+b')
   6     file.write(data)
   7     file.close()

Module zipmci

Voici un petit module, pour pouvoir manipuler des fichiers compressés au format .ZIP, en invite de commande.

C'est aussi un exemple d'utilisation des modules de la librairie standard de Python : zlib & zipfile

Mais, la librairie standard, on s'aperçoit que l'ajout de fichier 'ajoute' vraiment, sans tenir compte de l'existence préalable du fichier. On peut se retrouver ainsi avec deux, ou plus, occurrences d'un même fichier. De même, ni la mise à jour (update), ni la suppression de fichier ne sont prévus.

J'ai essayé de remédier à ces points :

Comme le code-source est un peu long, il me semble préférable de mettre un lien :

Le code a été testé avec Python 2.3 et Python 2.4, sous windows (2K et XP).

Manipulation de fichiers .tar.bz2

Le format tar.bz2 est généralement plus compact que le format .zip
Python peut nativement lire et écrire ce format.

Compresser un répertoire complet en .tar.bz2:

   1 import tarfile
   2 import bz2
   3 archive = tarfile.open('monarchive.tar.bz2','w:bz2')
   4 archive.debug = 1                 # Affiche les fichiers en cours de compression
   5 archive.add(r'd:\Mes documents')  # d:\Mes documents contient les fichiers à compresser
   6 archive.close()

Décompresser une archive .tar.bz2:

   1 import tarfile
   2 import bz2
   3 archive = tarfile.open('monarchive.tar.bz2','r:bz2')
   4 archive.debug = 1    # Affiche les fichiers en cours de décompression
   5 for tarinfo in archive:
   6     archive.extract(tarinfo, r'd:\monrepertoire') # d:\monrepertoire est l'endroit où on veut décompresser les fichiers.
   7 archive.close()

2016-06-05 21:42