Tecnología · GUÍA PRÁCTICA
¿El ZIP muestra archivos pero no los lee? Comprueba cada miembro y Python
Cuatro ZIP de prueba separan un directorio legible, un método no admitido y un CRC incorrecto para orientar el diagnóstico.

Si zipfile enumera un archivo ZIP pero lanza NotImplementedError al leer uno de sus miembros, comprueba ese miembro y el Python que ejecuta el trabajo. Poder leer el directorio o un miembro anterior no demuestra compatibilidad con todos los métodos de compresión y cifrado del ZIP.
Probamos cuatro pequeños ZIP propios de dos miembros con Python 3.12.14. Todos permitieron enumerar los archivos y leer readme.txt; al leer data.csv, los resultados fueron éxito, excepción por método no admitido o fallo de CRC. Cada resultado exige una investigación distinta.
Identifica el lector real y todos los miembros
Registra sys.version y zipfile.__file__ dentro del proceso que falla. Abre una copia de trabajo en modo de solo lectura y recorre z.infolist(), anotando filename, compress_type, flag_bits, file_size y compress_size de cada miembro. El programador de tareas, el entorno o un módulo del mismo nombre pueden hacer que el lector real difiera del comprobado en otro lugar.
Es un inventario, no una prueba de descompresión del contenido. No atribuyas el método del primer miembro a todos los demás ni interpretes is_zipfile() como garantía de lectura completa. La tabla de PKWARE distingue Deflate64 (9) y el marcador de cifrado AE-x (99). Resolver Zstandard no resuelve automáticamente esas funciones.
Distingue tres resultados de prueba
Cada control contenía readme.txt sin compresión y el mismo data.csv de 24 bytes. La combinación sin compresión más Deflate (0/8) devolvió el CSV esperado y testzip() devolvió None. Las combinaciones con Zstandard (0/93) y su identificador antiguo (0/20) permitieron leer el readme, pero causaron NotImplementedError al leer el CSV; testzip() propagó la misma excepción.
El cuarto control usó Deflate con metadatos CRC deliberadamente incorrectos. Leer data.csv causó BadZipFile, mientras testzip() devolvió su nombre. Registra por separado una excepción, un nombre de archivo defectuoso y None. Cuando falta el decodificador, el CRC sigue sin comprobarse: el error no demuestra ni corrupción ni integridad.
Comprueba la compatibilidad integrada, no solo el paquete instalado
La biblioteca instalada zstandard 0.25.0 descomprimió por separado nuestros marcos Zstandard. Sin embargo, importarla no añadió ZIP_ZSTANDARD al zipfile de Python 3.12.14. Disponer de un códec independiente no demuestra que el lector ZIP lo utilice. Comprueba el intérprete, el módulo y las capacidades documentadas de esa compilación.
La referencia de Python 3.14 indica que ZIP_ZSTANDARD se incorporó en 3.14 y requiere compression.zstd. Documenta la lectura de los identificadores 20 y 93 y la escritura de 93. Es documentación de una versión concreta, no una prueba realizada aquí con 3.14 ni una promesa de que actualizar resuelva todas las funciones de compresión, cifrado o archivo.
Elige una vía compatible y verifica el contenido necesario
Compara la compresión y el cifrado de cada miembro necesario con las capacidades documentadas del lector concreto. Si hace falta, usa un lector que admita esas funciones o pide al productor una copia exportada compatible, conservando el original. No cambies los números de método en las cabeceras ni debilites el cifrado para ocultar el error. La guía ZIP de Apache ya explica las comprobaciones por miembro; las discusiones existentes sobre los métodos 9 y 99 tratan sus respectivas funciones.
Después lee todos los miembros necesarios en un entorno con límites adecuados, comprueba los resultados CRC y valida el contenido esperado por la aplicación. Las 12 verificaciones pasaron en cuatro controles pequeños sin cifrado y sin extraer archivos. No certifican la seguridad de ZIP no fiables ni abarcan ZIP64, archivos divididos o todas las compilaciones de Python. La guía general enlazada explica las etapas independientes de estructura, CRC y contenido requerido.
