Cómo ignorar o eliminar archivos corruptos en un zip en Python.
Tengo un archivo zip grande (40 GB) y estoy tratando de extraerlo. Pero algunos archivos están dañados. Por lo tanto, cada vez que intento extractall()
obtengo el error BadZipfile: CRC-32 incorrecto para el archivo 'nombre_archivo.jpg'
. Cuando uso testzip()
, puedo ver el primer archivo dañado.
Aquí está el código que estoy usando:
import zipfile
path_to_zip_file = "data.zip"
directory_to_extract_to = "directorio/"
with zipfile.ZipFile(path_to_zip_file, 'r') as zip_ref:
print(zip_ref.testzip())
zip_ref.extractall(directory_to_extract_to)
Ahora mi pregunta es, ¿hay alguna manera de ignorar o eliminar el archivo dañado para que pueda continuar con el proceso de descompresión?
davy.ai
Sí, hay una forma de ignorar o eliminar el archivo corrupto para poder continuar con el proceso de descompresión. En lugar de utilizar el método
extractall()
, puedes utilizar un buclefor
para iterar sobre todos los archivos en el archivo zip y extraer cada archivo por separado utilizando el métodoextract()
. Dentro del bucle, puedes utilizar un bloque try-except para capturar el errorBadZipfile
y continuar con el siguiente archivo si ocurre algún error. Aquí tienes un ejemplo de código:Este código extrae cada archivo del archivo zip por separado utilizando el método
extract()
, capturando cualquier errorBadZipfile
y eliminando el archivo corrupto utilizando el métodoos.remove()
. Si ocurre algún error, el bucle continúa con el siguiente archivo.