Cargando



Cómo comprimir y descomprimir datos en Python

En este tutorial se va a usar ejemplos con los módulos zlib y gzip para ver cómo comprimir y descomprimir datos en Python.


ago 17 2016 13:50
Intermedio
ago 18 2016 08:23

Hoy vamos a ver un tutorial que tratará sobre la compresión y descompresión de datos en Python, una tarea muy fácil, ya que contamos con ciertos módulos que nos permitirán llevar a cabo esta labor de comprimir datos. Las librerías son: zlib, gzip, bz2, zipfile y tarfile.

 

A lo largo del tutorial veremos ejemplos sobre alguna de las librerías para aprender cómo se usa, es la mejor manera de comprender el funcionamiento.

 

Nota
Se va a hacer uso de la versión 3 de Python.

 

Vamos a empezar con los ejemplos. Todos ellos van a ser sencillos y fáciles de comprender.

 

 

1. Módulo zlib


Vamos a ver un par de ejemplos con esta librería, ambos serán fáciles como ya dijimos antes.

 

Ejemplo 1

Tenemos el siguiente código, cómo puedes observar es breve:
import zlib as zl

line = b"Esto solo es una prueba para el tutorial que se va a publicar en Solvetic"
line_compress = zl.compress(line)
print("Tamaño sin comprimir %d" % len(line))
print("Tamaño comprimido %d" % len(line_compress))
Comprimimos la línea original y mostramos lo que ocupa una y otra, obteniendo la siguiente salida:

 

ejemplo-zlib-1.jpg

 

Ahora vamos a ver como descomprimir en el siguiente ejemplo.

 

Ejemplo 2

En el siguiente código vamos a comprimir una línea, la mostramos comprimida, y la descomprimimos para mostrarla.
import zlib as zl

line = b"Testing Python zlib"
line_compress = zl.compress(line)
print(line_compress)
line_decompress = zl.decompress(line_compress)
print(line_decompress)
print(line_decompress.decode("utf-8"))
La última línea del código la utilizamos para pasar de bytes a string (usando utf-8 en la decodificación), ya que la penúltima línea mostrará una b al principio. La salida del programa es el siguiente:

 

ejemplo-zlib-2.jpg

 

Pasamos ahora a ver otra librería como es gzip.

 

 

2. Módulo gzip


Los ejemplos visto anteriormente son válidos para esta librería, veamos el ejemplo 1 igual que el anterior, solo cambiando la librería.

 

Ejemplo 1

El código que tenemos es el siguiente, igual al anterior cambiando zlib por gzip:
import gzip

line = b"Esto solo es una prueba para el tutorial que se va a publicar en Solvetic"
line_compress = gzip.compress(line)
print("Tamaño sin comprimir %d" % len(line))
print("Tamaño comprimido %d" % len(line_compress))
Si ejecutamos, tenemos la siguiente salida:

 

ejemplo-gzip-1.jpg

 

Pesa más la compresión que la que no está comprimida. Si cambiamos el texto por uno mayor y ejecutamos:

 

ejemplo-gzip-1-2.jpg

 

Ahora si ha mejorado el tamaño, pero sigue comprimiendo mejor zlib, a continuación se pone una captura, la primera ejecución usa zlib y la segunda gzip.

 

comparacion-gzip-zlib.jpg

 

Vamos a por el siguiente ejemplo, que será el útlimo.

 

Ejemplo 2

Ahora escribiremos y leeremos de un fichero, el código es el siguiente:
import gzip


fw = gzip.open('test.txt.gz', 'wb')
fw.write(b"Testing gzip")
fw.close()
fr = gzip.open('test.txt.gz', 'rb')
print(fr.read().decode("utf-8"))
fr.close()
Puedes apreciar que no tratamos las posibles excepciones que puedan surgir, esto se ha omitido para que el ejemplo sea más corto y directo. Si ejecutamos el código, tenemos la siguiente salida:

 

ejemplo-gzip-2.jpg

 

Hemos visto unos ejemplos de uso de las librerías zlib y gzip, puedes consultar la documentación oficial de Python para profundizar y ver mejor estos módulos y los arriba mencionados. Y por si te interesa te dejamos el enlace a otro tutorial sobre Python: Serializar y deserializar.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X