FAQ PythonConsultez toutes les FAQ

Nombre d'auteurs : 15, nombre de questions : 269, dernière mise à jour : 10 septembre 2014  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions posées sur le forum Python complétées par d'autres questions qui pouvaient nous sembler intéressantes de traiter. Toutefois il se peut que les réponses apportées contiennent des erreurs, imprécisions ... Vous pouvez dans ce cas contacter un des membres de la rédaction pour lui faire part de vos remarques.

L'équipe Python de Developpez.


SommaireGestion Fichier/RépertoireCompression/Archive (2)
précédent sommaire suivant
 

Pour manipuler les archives ZIP, il vous faudra passer par le module zipfile. Vous utiliserez 2 fonctions de ce module.
La première fonction zipfile.ZipFile( file[, mode[, compression[, allowZip64]]])file est le nom du fichier de l'archive à créer, mode, le mode d'ouverture du fichier, donc ici 'w' (ou 'a' si l'archive existe déjà et que vous voulez la compléter), compression représente le mode de compression ZIP et aura pour valeur ZIP_STORED ou ZIP_DEFLATED.
La deuxième fonction est la méthode z.write( filename[, arcname[, compress_type]])filename est le chemin du fichier à compresser, arcname le chemin d'accès du fichier lors de la décompression (par défaut identique à filename).
Il vous faudra également parcourir l'arborescence du répertoire afin d'ajouter chaque fichier dans l'archive.

Code python :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import zipfile 
import os.path 
import glob 
  
def zipdirectory(filezip, pathzip): 
    lenpathparent = len(pathzip)+1   ## utile si on veut stocker les chemins relatifs 
    def _zipdirectory(zfile, path): 
        for i in glob.glob(path+'\\*'): 
            if os.path.isdir(i): _zipdirectory(zfile, i ) 
            else: 
                print i 
                zfile.write(i, i[lenpathparent:]) ## zfile.write(i) pour stocker les chemins complets 
    zfile = zipfile.ZipFile(filezip,'w',compression=zipfile.ZIP_DEFLATED) 
    _zipdirectory(zfile, pathzip) 
    zfile.close() 
  
zipdirectory('python25.zip', 'c:/python25')

Mis à jour le 30 novembre 2006 Guigui_

Comment lister l'arborescence d'un répertoire ?
Python Library Reference

Pour décompresser une archive ZIP, il suffit de parcourir l'ensemble des fichiers de l'archive donnée par z.namelist() et de copier chaque fichier de cette archive dans un nouveau fichier que l'on crée. zipfile.ZipFile(file, 'r') permet d'ouvrir une archive ZIP en mode lecture. La méthode z.read(name) permet de lire le contenu du fichier name de l'archive

Code python :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import zipfile 
import os.path 
import os 
import glob 
  
def dezip(filezip, pathdst = ''): 
    if pathdst == '': pathdst = os.getcwd()  ## on dezippe dans le repertoire locale 
    zfile = zipfile.ZipFile(filezip, 'r') 
    for i in zfile.namelist():  ## On parcourt l'ensemble des fichiers de l'archive 
        print i 
        if os.path.isdir(i):   ## S'il s'agit d'un repertoire, on se contente de creer le dossier 
            try: os.makedirs(pathdst + os.sep + i) 
            except: pass 
        else: 
            try: os.makedirs(pathdst + os.sep + os.path.dirname(i)) 
            except: pass 
            data = zfile.read(i)                   ## lecture du fichier compresse 
            fp = open(pathdst + os.sep + i, "wb")  ## creation en local du nouveau fichier 
            fp.write(data)                         ## ajout des donnees du fichier compresse dans le fichier local 
            fp.close() 
    zfile.close() 
  
dezip('python25.zip', 'python25')

Mis à jour le 2 décembre 2006 Guigui_

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
 
 
 
Partenaires

PlanetHoster
Ikoula