> Modules standards > Modules pour les fichiers > Archives zip
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