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

Publicar un comentario

Temas relacionados

Entradas populares de este blog

tkinter Grid

Controles y Contenedores JavaFX 8 - I

tkinter Canvas

Histogramas OpenCV Python