Mis a jour le 2025-04-14, 12:10

Archives zip

On peut utiliser le package zipfile (import zipfile) ou aussi shutil qui est de plus haut niveau mais moins souple (voir shutil).
Création d'un zip :
  • myZip = zipfile.ZipFile('dest/my.zip', 'w', zipfile.ZIP_DEFLATED) : création d'une nouvelle archive (il faut indiquer ZIP_DEFLATED, sinon, elle n'est pas compressée par défaut).
  • rajout d'un fichier avec son path réel et dans l'archive : myZip.write('source/myFile'),
  • fermeture de l'archive à la fin : myZip.close().
  • on peut décider du chemin exact du fichier dans l'archive quelque soit l'endroit où se trouve le fichier : myZip.write('source/myFile', 'source2/myFile') : le fichier est physiquement dans source, mais dans l'archive, il sera dans source2.
Lecture d'un zip :
  • myZip = zipfile.ZipFile(myFile) : pour ouvrir le zip au début.
  • myZip.setpassword(myPassword.encode()) : pour indiquer le password si le zip est crypté (qui doit être converti en bytes, d'où le encode)
  • myZip.namelist() : donne la liste des fichiers contenus dans l'archive (avec leur path).
  • myZip.getinfo('source/myFile') : récupère un objet ZipInfo qui a les propriétés sur le fichier dans l'archive. Par exemple, si zipinfo = myZip.getinfo('source/myFile') :
    • zipinfo.file_size : taille originale du fichier.
    • zipinfo.compress_size : taille compressée.
    • zipinfo.filename : nom du fichier.
  • on peut aussi directement avoir tous les objets ZipInfo de l'archive avec myZip.infolist().
  • myZip.extractall() : extrait tous les fichiers dans le directory courant (en respectant l'arborescence du zip).
  • myZip.extractall(targetDir) : extrait tous les fichiers dans le directory donné (en respectant l'arborescence du zip).
  • myZip.extractall('source/myFile', targetDir) : extrait seulement le fichier indiqué (présent dans le zip) dans le directory indiqué.

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert