Pitón

Módulo gzip de Python

Módulo gzip de Python

En esta lección, estudiaremos cómo podemos hacer uso de Python gzip módulo para leer y escribir en los archivos comprimidos en Python. La característica más importante que nos brinda este módulo es que podemos tratar los archivos comprimidos como objetos de archivo normales, lo que nos ahorra la complejidad de administrar archivos y su ciclo de vida en nuestro código y nos permite enfocarnos en la lógica comercial central del programa.La gzip El módulo nos proporciona casi las mismas características que los programas GNU como gunzip y gzip.

Escribir archivos comprimidos con open ()

Comenzaremos con un ejemplo básico donde podemos crear un archivo gzip y escribir algunos datos en él. Para esto, necesitamos hacer un archivo y abrirlo con el modo de escritura para que los datos se puedan insertar en él. Veamos un programa de muestra con el que podemos escribir datos en un archivo gzip:

importar gzip
importar io
importar sistema operativo
output_file = 'linxhint_demo.TXT.gz '
write_mode = 'wb'
con gzip.open (output_file, write_mode) como salida:
con io.TextIOWrapper (salida, codificación = 'utf-8') como codificación:
codificar.write ('Podemos escribir lo que queramos en el archivo.\norte')
imprimir (archivo_salida,
'contiene', os.stat (archivo_salida).st_size, 'bytes')
os.system ('archivo -b --mime '.formato (archivo_salida))

Esto es lo que obtenemos con este comando:

Escribiendo en un archivo zip

Si ahora echa un vistazo a la estructura de carpetas donde ejecutó este script, debería haber un nuevo archivo con el nombre que proporcionamos en nuestro programa anterior.

Escribir varias líneas en un archivo comprimido

También podemos escribir varias líneas o en realidad cualquier número de líneas en nuestro archivo gzip de una manera muy similar a como lo hicimos en el ejemplo anterior. Para hacer que este ejemplo sea diferente, también usaremos el módulo itertools. Veamos el programa de muestra:

importar gzip
importar io
importar sistema operativo
importar itertools
output_file = 'linxhint_demo.TXT.gz '
write_mode = 'wb'
con gzip.open (output_file, write_mode) como salida:
con io.TextIOWrapper (salida, codificación = 'utf-8') como enc:
enc.líneas de escritura
itertools.repeat ('LinuxHint, repitiendo la misma línea!.\ n ', 10)
)
os.system ('gzcat linxhint_demo.TXT.gz ')

Veamos el resultado de este comando:

Escribir varias líneas

Lectura de datos comprimidos

También podemos leer el archivo comprimido que creamos en el último ejemplo usando el módulo gzip con una llamada muy simple a abierto función:

importar gzip
importar io
importar sistema operativo
nombre_archivo = 'linxhint_demo.TXT.gz '
file_mode = 'rb'
con gzip.abrir (nombre_archivo, modo_archivo) como archivo_entrada:
con io.TextIOWrapper (input_file, encoding = 'utf-8') como dec:
imprimir (dic.leer())

Esto es lo que obtenemos con este comando:

Leer un archivo gzip

Corrientes de lectura

Debido al hecho de que los archivos de texto pueden tener un tamaño muy grande, es inteligente abrir estos archivos en una secuencia en lugar de cargar el archivo completo en un solo objeto que ocupa una gran cantidad de memoria del sistema y, en algunos casos, incluso puede causar el proceso. chocar completamente. Veamos un programa de muestra que lee el archivo comprimido dado en una secuencia:

importar gzip
desde io importar BytesIO
importar binascii
mode_write = 'wb'
mode_read = 'rb'
non_compressed = b'Línea repetida x veces.\ n '* 8
print ('Datos no comprimidos:', len (no_comprimidos))
imprimir (no_comprimido)
buf = BytesIO ()
con gzip.GzipFile (mode = mode_write, fileobj = buf) como archivo:
expediente.escribir (no_comprimido)
comprimido = buf.getvalue ()
print ('Datos comprimidos:', len (comprimido))
imprimir (binascii.hexlify (comprimido))
in_buffer = BytesIO (comprimido)
con gzip.GzipFile (mode = mode_read, fileobj = in_buffer) como archivo:
read_data = archivo.leer (len (no_comprimido))
print ('\ nLeyendo de nuevo:', len (read_data))
imprimir (read_data)

Veamos el resultado de este comando:

Leer un archivo gzip en una secuencia

Aunque el programa era un poco largo, en realidad solo usamos módulos de Python para abrir el archivo y transmitir el contenido a la consola con un objeto lector almacenado en búfer.

Conclusión

En esta lección, vimos cómo podemos hacer uso del módulo gzip de Python para comprimir y descomprimir archivos en Python. La característica más importante que nos brinda esta biblioteca es que podemos tratar los archivos comprimidos como objetos de archivo normales.

Lea más publicaciones basadas en Python aquí.

Controle y administre el movimiento del mouse entre múltiples monitores en Windows 10
Administrador de mouse de doble pantalla le permite controlar y configurar el movimiento del mouse entre varios monitores, al ralentizar sus movimient...
WinMouse le permite personalizar y mejorar el movimiento del puntero del mouse en una PC con Windows
Si desea mejorar las funciones predeterminadas del puntero del mouse, use el software gratuito WinMouse. Agrega más funciones para ayudarlo a aprovech...
El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...