2010-08-10 13 views
140

Leí los documentos de los módulos zipfile, pero no pude entender cómo descomprimir un archivo, solo cómo comprimir un archivo. ¿Cómo descomprimo todo el contenido de un archivo zip en el mismo directorio?Descompresión de archivos en python

Respuesta

235
import zipfile 
zip_ref = zipfile.ZipFile(path_to_zip_file, 'r') 
zip_ref.extractall(directory_to_extract_to) 
zip_ref.close() 

Eso es más o menos!

+5

¿qué pasa si el contenido del archivo .zip es el mismo, en todos los archivos .zip? cómo cambiar el nombre del contenido antes de extraer? ejemplo: 1.zip 2.zip ... todas contienen content.txt: extract all como 1content.txt 2content.txt? – iratzhash

+1

@Rahul - y qué biblioteca 'importo' – 3kstc

+1

@ 3kstc 'import zipfile' –

15

utilizar el método de extractall, si estás usando Python 2.6+

zip = ZipFile('file.zip') 
zip.extractall() 
+0

No es necesario especificar un destino (zip.extractall (destino))? – asonnenschein

+2

No si solo está extrayendo en el mismo directorio que el archivo zip –

+3

@DanGayle esto parece estar extrayendo el archivo zip en el directorio de trabajo actual, NO la ubicación del archivo zip –

106

Si está utilizando Python 3.2 o posterior:

import zipfile 
with zipfile.ZipFile("file.zip","r") as zip_ref: 
    zip_ref.extractall("targetdir") 

Usted no necesita utilizar el cierre o tratar/atrapar con esto, ya que utiliza la construcción context manager

+10

ZipFile también funciona como un administrador de contexto en 2.7 o más tarde: https://docs.python.org/2/library/zipfile.html#zipfile.ZipFile – blueCat

Cuestiones relacionadas