Buscar..


Sintaxis

  • importar archivo zip
  • clase zipfile. ZipFile ( archivo, modo = 'r', compresión = ZIP_STORED, allowZip64 = True )

Observaciones

Si intenta abrir un archivo que no es un archivo ZIP, se zipfile.BadZipFile la excepción zipfile.BadZipFile .

En Python 2.7, este fue escrito zipfile.BadZipfile , y este nombre antiguo se conserva junto con el nuevo en Python 3.2+

Apertura de archivos zip

Para comenzar, importe el módulo zipfile y establezca el nombre del archivo.

import zipfile
filename = 'zipfile.zip'

Trabajar con archivos zip es muy similar a trabajar con archivos , usted crea el objeto abriendo el archivo zip, que le permite trabajar en él antes de cerrar el archivo nuevamente.

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

En Python 2.7 y en Python 3 versiones superiores a 3.2, podemos usar el administrador de contexto with . Abrimos el archivo en modo "leer", y luego imprimimos una lista de nombres de archivos:

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

Examinando los contenidos de Zipfile

Hay algunas formas de inspeccionar el contenido de un archivo zip. Se puede utilizar el printdir que acaba de obtener una variedad de información que se envía a 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.

También podemos obtener una lista de nombres de archivo con la namelist método. Aquí, simplemente imprimimos la lista:

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

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

En lugar de namelist de namelist , podemos llamar al método infolist , que devuelve una lista de objetos ZipInfo , que contienen información adicional sobre cada archivo, por ejemplo, una marca de tiempo y el tamaño del archivo:

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

Extraer el contenido del archivo zip a un directorio.

Extraer todo el contenido de un archivo zip

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

Si desea extraer un solo archivo, use el método de extracción, toma la lista de nombres y la ruta como parámetro de entrada

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

Creando nuevos archivos

Para crear un nuevo archivo, abra el archivo zip con el modo de escritura.

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

Para agregar archivos a este archivo use el método 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 desea escribir una cadena de bytes en el archivo, puede usar el método 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow