Comprimir es una forma elegante de comprimir varios archivos y combinarlos en uno solo. Esto ahorra no solo espacio de almacenamiento sino también ancho de banda al transferir un archivo a través de una red. Una de las mejores características de zip es que funciona en todas las plataformas principales: Windows, Linux y Mac.
Zip usa compresión sin pérdidas para que retenga todos los datos al comprimirlos y descomprimirlos. También puede cifrar y descifrar sus archivos zip.
Con tantas funciones para explorar, descubra cómo puede leer, comprimir y descomprimir archivos usando el módulo zipfile de Python.
¿Qué es el módulo zipfile?
Puede usar el módulo zipfile estándar para manipular archivos zip usando Python. Con este módulo, puede abrir y leer archivos zip, leer sus metadatos, crear un archivo zip, comprimirlo y descomprimir archivos. Hay tres métodos de compresión disponibles: Deflate, Bzip2 y LZMA.
Una de las cosas que le faltan al módulo es la capacidad de manejar archivos de varios discos, pero maneja la extensión ZIP64. También puede descifrar archivos zip pero no cifrarlos. Con el módulo zipfile, puede obtener metadatos del archivo zip, como la fecha y la hora de la modificación. También puede obtener detalles como el sistema operativo utilizado para crear el archivo, la versión de zip y el tamaño del archivo en formato comprimido y sin comprimir.
Cómo comprimir archivos usando Python
Puede comprimir varios archivos en un solo archivo utilizando el módulo zipfile de Python. Importar el Archivo zip módulo de la archivo zip paquete para realizar las operaciones zip requeridas. también importar el sistema operativo módulo para seleccionar y guardar archivos.
Definir una función get_all_file_paths(). Debe aceptar un parámetro de directorio que contenga la ruta a la carpeta que contiene los archivos para comprimir.
Inicialice una lista vacía que almacenará la lista de rutas de archivo. Use un bucle for para obtener el contenido completo del directorio de destino usando el os.caminar() función. Esta función obtiene los nombres de archivo en un árbol de directorios moviéndose a lo largo de un enfoque de arriba hacia abajo o de abajo hacia arriba. Para cada directorio, la función devuelve una tupla de tres que contiene raíz, directorios y archivos.
La raíz es una cadena que contiene la ruta completa al directorio. La lista de directorios incluye todos los subdirectorios contenidos en el directorio. La lista de archivos contiene todos los archivos presentes en el directorio.
Dentro del ciclo, declara otro bucle para iterar sobre la lista de archivos. Utilizar el os.path.join() función para combinar el nombre del directorio con cada nombre de archivo para hacer una ruta completa. Luego, agregue este nombre de archivo completo a la lista que creó anteriormente. Una vez que finalice esta operación, devuelva la lista de rutas de archivos.
# importar los módulos requeridos
de archivo zip importar Archivo zip
importar sistema operativo# crear una función para obtener todas las rutas de archivo
definitivamenteget_all_file_paths(directorio):
# inicializando la lista vacía para almacenar rutas de archivos
rutas_de_archivo = []# navegar a través de los archivos
pararaíz, directorios, archivosensistema operativo.caminar(directorio):
para nombre de archivo en archivos:
# unir la raíz y el nombre de archivo para crear una ruta de archivo completa
filepath = os.path.join (raíz, nombre de archivo)
rutas_de_archivo.adjuntar(ruta de archivo)
# devolver todas las rutas de archivos
devolver rutas_de_archivo
Almacene la ruta a la carpeta que contiene los archivos que desea comprimir en una variable llamada directorio. Llame a la función, get_all_file_paths() que creó anteriormente y almacenar el valor que devuelve en rutas_de_archivo.
Muestre un mensaje al usuario para informarle que estos son los archivos que el programa comprimirá. Iterar sobre los archivos y mostrar sus nombres.
Pase el nombre que desea que tenga su archivo zip junto con la especificación de que el programa devuelve un archivo grabable usando la instrucción with para manejar las excepciones. Iterar sobre cada archivo y usar la función write() sobre el archivo grabable en un archivo zip.
Cuando se completa la operación, muestra un mensaje que explica que el programa comprimió todos los archivos con éxito.
# ruta a la carpeta que desea comprimir
directorio = './pythonzip'# función de llamada para obtener todas las rutas de archivo en el directorio
file_paths = get_all_file_paths (directorio)# imprimir la lista de todos los archivos que desea comprimir
imprimir('Lista de archivos que se comprimirán:')para file_name en file_paths:
imprimir(Nombre del archivo)# escribir archivos en un archivo zip
con Archivo zip('mi_archivo.zip', 'w') como cremallera:
# escribir cada archivo uno por uno
para archivo en file_paths:
cremallera.escribir(archivo)
imprimir('¡Todos los archivos están comprimidos!')
Cómo descomprimir archivos usando Python
La implementación de descomprimir archivos usando el módulo zipfile es mucho más fácil. Importar el archivo zip paquete de la Archivo zip module y almacene el nombre del archivo zip que desea extraer en una variable. Use la instrucción with para manejar las excepciones y abra el archivo que desea extraer en el modo de lectura. Utilizar el imprimirdir() función para mostrar la tabla de contenido de los archivos presentes en el zip.
Muestre un mensaje de progreso que indique que está extrayendo los archivos y use el extraer todo() función para extraer el contenido del archivo zip al directorio de trabajo actual. Alternativamente, puede incluir un parámetro de ruta para cambiar la ruta donde el programa extrae los archivos.
Mostrar un mensaje usando el imprimir Declaración sobre la finalización de la operación.
# importando los módulos requeridos
de archivo zip importar Archivo zip# pasa el nombre del archivo zip que quieres extraer
nombre_archivo = "extraer.zip"# abriendo el archivo zip en modo lectura
con ZipFile (nombre_archivo, 'r') como cremallera:
# mostrar el contenido del archivo zip
cremallera.printdir()
# extrayendo todos los archivos
imprimir('Extracción en curso...')
cremallera.extraer todo()
imprimir('¡Todos los archivos están extraídos!')
Más sobre archivos zip
Los archivos zip han ganado mucha popularidad y están en uso desde hace décadas. Sitios web populares como GitHub y Google Drive le permiten descargar una colección de archivos como un archivo zip. El programa zip comprime un conjunto de archivos en un solo paquete. Esto contrasta con una herramienta como tar que empaqueta los archivos pero no los comprime.
Si desea cifrar sus archivos utilizando un algoritmo más eficiente, los archivos RAR son el camino a seguir. RAR usa el algoritmo AES-128 que es mejor que el algoritmo desinflado que usan los archivos zip. En definitiva, elige el que mejor se adapte a tus necesidades.