Solución:
La causa es la combinación de:
- el tipo de compresión de este archivo es tipo 9: Deflate64 / Deflate mejorado (Formato propietario de PKWare, a diferencia del tipo 8 más común)
- y un error de zipfile: no lanzará una excepción para tipos de compresión no admitidos. Solía devolver silenciosamente un objeto de archivo incorrecto [Section 4.4.5 compression method]. Aargh. Qué falso. ACTUALIZACIÓN: Presenté el error 14313 y se solucionó en 2012, por lo que ahora genera NotImplementedError cuando se desconoce el tipo de compresión.
Una línea de comandos Solución alterna es descomprimir, luego rezip, para obtener una simple tipo 8: desinflado.
zipfile arrojará una excepción en 2.7, 3.2+ Supongo que zipfile nunca podrá manejar el tipo 9, por razones legales. El documento de Python no menciona en absoluto que zipfile no puede manejar otros tipos de compresión 🙁
Mi solución para manejar tipos de compresión que no son compatibles con ZipFile de Python fue confiar en una llamada a 7zip cuando ZipFile.extractall falla.
from zipfile import ZipFile
import subprocess, sys
def Unzip(zipFile, destinationDirectory):
try:
with ZipFile(zipFile, 'r') as zipObj:
# Extract all the contents of zip file in different directory
zipObj.extractall(destinationDirectory)
except:
print("An exception occurred extracting with Python ZipFile library.")
print("Attempting to extract using 7zip")
subprocess.Popen(["7z", "e", f"{zipFile}", f"-o{destinationDirectory}", "-y"])
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)