Python Compresión de Archivos

En este tutorial Python 3.x aprenderemos a leer y escribir archivos comprimidos utilizando los algoritmos de compresión: zlib, gzip, bzip2 y lzma, también aprenderemos a comprimir y extraer carpetas en los formatos zip, tar, etc.

Comprimir y extraer carpetas

Usando el modulo shutil podemos comprimir carpetas usando los formatos zip, tar y otros, su uso el fácil, primero para averiguar cuales son los formatos soportados por este modulo usamos el método get_archive_formats(). 

Para comprimir una carpeta disponemos de make_archive() primero indicamos la carpeta y el nombre del archivo comprimido, luego el formato de archivo, obtenido con el método anterior, finamente indicamos la carpeta que deseamos comprimir.

import shutil

shutil.get_archive_formats()

shutil.make_archive("c:/developer/temp/file", "zip", "c:/developer/temp/lwjgl")
shutil.unpack_archive("c:/developer/temp/file.zip", "c:/developer/temp/file")

Para extraer una carpeta comprimida el proceso es similar, solo que utilizaremos el método unpack_archive() indicando primero el archivo que deseamos extraer y luego la capeta donde deseamos almacenar la extracción.

Leer y escribir archivos comprimidos

Si estamos escribiendo archivos y deseamos que estos se almacenen comprimidos en disco, simplemente seleccionamos el método de compresión y escribimos el archivo como lo haríamos con un archivo normal, el único cambio es que debemos indicar el modulo de compresión que deseamos utilizar.

# gzip compression
import gzip
with gzip.open('archivo.gz', 'wt') as f:
     f.write(text)

# bz2 compression
import bz2
with bz2.open('archivo.bz2', 'wt') as f:
     f.write(text)

Leer el archivo comprimido también resulta muy similar a como lo hacemos con un archivo normal, al igual que para escribir, debemos indicar el modulo y realizar la operación de lectura.

import gzip
with gzip.open('archivo.gz', 'rt') as f:
     text = f.read()

Comentarios

Temas relacionados

Entradas populares de este blog

Conectar SQL Server con Java

Entrenar OpenCV en Detección de Objetos

Crear un .exe para un archivo java .jar

Conociendo la clase cv::Mat de OpenCV

Manipular pixeles OpenCV Python