En esta lección, estudiaremos sobre 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 este módulo nos proporciona es que podemos tratar los archivos comprimidos como objetos de archivo normales que nos ahorra de la complejidad de administrar archivos y su ciclo de vida en nuestro código y nos permite centrarnos en la lógica comercial central del programa.El 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 en el que 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, encoding = 'utf-8') como code:
codificar.escribir ('Podemos escribir lo que queramos para el archivo.\norte')
imprimir (output_file,
'Contiene', OS.stat (output_file).st_size, 'bytes')
sistema operativo.System ('File -B - -Mime '.formato (output_file))
Esto es lo que recuperamos con este comando:
Escribir en el archivo zip
Si ahora echa un vistazo a la estructura de la carpeta donde ejecutó este script, debe haber un nuevo archivo nombrado con lo que proporcionamos en nuestro programa anterior.
Escribir múltiples líneas en un archivo comprimido
También podemos escribir múltiples líneas o, en realidad, cualquier cantidad de líneas en nuestro archivo GZIP de manera muy similar que lo hicimos en el ejemplo anterior. Para hacer que este ejemplo sea diferente, también haremos uso del módulo de 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:
enchufe.WriteLine (
Itertools.Repita ('Linuxhint, repitiendo la misma línea!.\ n ', 10)
)
sistema operativo.sistema ('GZCAT LINXHINT_DEMO.TXT.GZ ')
Veamos la salida para este comando:
Escribir múltiples líneas
Lectura de datos comprimidos
También podemos leer el archivo comprimido que creamos en el último ejemplo utilizando el módulo GZIP con una llamada muy simple a abierto función:
importar gzip
importar IO
importar sistema operativo
file_name = 'linxhint_demo.TXT.gz '
file_mode = 'rb'
con gzip.abrir (file_name, file_mode) como input_file:
con io.TextIowraPper (input_file, coding = 'utf-8') como dec:
Imprimir (decir.leer())
Esto es lo que recuperamos con este comando:
Leer un archivo GZIP
Lectura de transmisiones
Debido al hecho de que los archivos de texto pueden ser de gran tamaño, es inteligente abrir estos archivos en una transmisión en lugar de cargar el archivo completo en un solo objeto que ocupa mucha memoria del sistema y, en algunos casos, puede causar el proceso. bloquear por completo. Veamos un programa de muestra que lea el archivo comprimido dado en una secuencia:
importar gzip
de io import bytesio
importar binascii
mode_write = 'wb'
mode_read = 'rb'
non_comprised = B'Repeated Line x Times.\ n ' * 8
Imprimir ('Datos no comprimidos:', Len (non_comprised))
Imprimir (Non_Compressado)
buf = bytesio ()
con gzip.Gzipfile (mode = mode_write, fileobj = buf) como archivo:
archivo.Escribir (Non_ Comprised)
comprimido = buf.GetValue ()
Imprimir ('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.Read (Len (Non_Compressed))
imprime ('\ nreading it de nuevo:', len (read_data))
imprimir (read_data)
Veamos la salida para este comando:
Leer el archivo GZIP en una transmisión
Aunque el programa fue un poco largo, en realidad solo usamos los módulos de Python, abren el archivo y transmitimos el contenido a la consola con un objeto de lector amortiguado.
Conclusión
En esta lección, observamos cómo podemos hacer uso del módulo Python GZIP para comprimir y descomprimir archivos en Python. La característica más importante que esta biblioteca nos proporciona es que podemos tratar los archivos comprimidos como objetos de archivo normales.
Lea más publicaciones basadas en Python aquí.