Recherche…


Syntaxe

  • importer le fichier zip
  • fichier zip de classe . ZipFile ( fichier, mode = 'r', compression = ZIP_STORED, allowZip64 = True )

Remarques

Si vous essayez d'ouvrir un fichier qui n'est pas un fichier ZIP, l'exception zipfile.BadZipFile est zipfile.BadZipFile .

Dans Python 2.7, ceci était orthographié zipfile.BadZipfile , et cet ancien nom est conservé à côté du nouveau dans Python 3.2+

Ouverture de fichiers Zip

Pour commencer, importez le module zipfile et définissez le nom du fichier.

import zipfile
filename = 'zipfile.zip'

Travailler avec des archives zip est très similaire à travailler avec des fichiers , vous créez l'objet en ouvrant le fichier zip, ce qui vous permet de travailler dessus avant de refermer le fichier.

zip = zipfile.ZipFile(filename)
print(zip)
# <zipfile.ZipFile object at 0x0000000002E51A90>
zip.close()

Dans Python 2.7 et dans les versions Python 3 supérieures à 3.2, nous pouvons utiliser le gestionnaire de contexte with . Nous ouvrons le fichier en mode "read", puis imprimons une liste de noms de fichiers:

with zipfile.ZipFile(filename, 'r') as z:
    print(zip)
    # <zipfile.ZipFile object at 0x0000000002E51A90>

Examen du contenu du fichier zip

Il y a plusieurs manières d'inspecter le contenu d'un fichier zip. Vous pouvez utiliser le printdir pour obtenir une variété d'informations envoyées à stdout

with zipfile.ZipFile(filename) as zip:
    zip.printdir()

    # Out:
    # File Name                                             Modified             Size
    # pyexpat.pyd                                    2016-06-25 22:13:34       157336
    # python.exe                                     2016-06-25 22:13:34        39576
    # python3.dll                                    2016-06-25 22:13:34        51864
    # python35.dll                                   2016-06-25 22:13:34      3127960
    # etc.

Nous pouvons également obtenir une liste de noms de fichiers avec la méthode namelist . Ici, nous imprimons simplement la liste:

with zipfile.ZipFile(filename) as zip:
    print(zip.namelist())

# Out: ['pyexpat.pyd', 'python.exe', 'python3.dll', 'python35.dll', ... etc. ...]

Au lieu de la namelist de namelist , nous pouvons appeler la méthode infolist , qui renvoie une liste d'objets ZipInfo , qui contiennent des informations supplémentaires sur chaque fichier, par exemple un horodatage et une taille de fichier:

with zipfile.ZipFile(filename) as zip:
    info = zip.infolist()
    print(zip[0].filename)
    print(zip[0].date_time)
    print(info[0].file_size)

# Out: pyexpat.pyd
# Out: (2016, 6, 25, 22, 13, 34)
# Out: 157336

Extraire le contenu d'un fichier zip dans un répertoire

Extraire tout le contenu d'un fichier zip

import zipfile
with zipfile.ZipFile('zipfile.zip','r') as zfile:
    zfile.extractall('path')

Si vous souhaitez extraire des fichiers uniques, utilisez la méthode d'extraction, il prend la liste de noms et le chemin comme paramètre d'entrée

import zipfile
f=open('zipfile.zip','rb')
zfile=zipfile.ZipFile(f)
for cont in zfile.namelist():
    zfile.extract(cont,path)

Créer de nouvelles archives

Pour créer une nouvelle archive, ouvrez le fichier zip avec le mode écriture.

import zipfile
new_arch=zipfile.ZipFile("filename.zip",mode="w")

Pour ajouter des fichiers à cette archive, utilisez la méthode write ().

new_arch.write('filename.txt','filename_in_archive.txt') #first parameter is filename and second parameter is filename in archive by default filename will taken if not provided
new_arch.close()

Si vous voulez écrire une chaîne d'octets dans l'archive, vous pouvez utiliser la méthode writestr ().

str_bytes="string buffer"
new_arch.writestr('filename_string_in_archive.txt',str_bytes)
new_arch.close()


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow