Skip to content

Archives

  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021

Categories

  • No hay categorías
Trend RepositoryArticles and guides
Articles

gzip – Soporte para archivos gzip¶

On noviembre 24, 2021 by admin

Código fuente: Lib/gzip.py

Este módulo proporciona una interfaz sencilla para comprimir y descomprimir archivos tal y como lo harían los programas GNU gzip y gunzip.

La compresión de datos la proporciona el módulo zlib.

El módulo gzip proporciona la clase GzipFile, así como las funciones de convenienciaopen(), compress() y decompress().La clase GzipFile lee y escribe archivos con formato gzip, comprimiendo o descomprimiendo automáticamente los datos para que parezcan un objeto de archivo ordinario.

Tenga en cuenta que los formatos de archivo adicionales que pueden ser descomprimidos por los programasgzip y gunzip, como los producidos porcompress y pack, no son compatibles con este módulo.

El módulo define los siguientes elementos:

gzip.open(filename, mode=’rb’, compresslevel=9, encoding=None, errors=None, newline=None)¶

Abre un archivo comprimido con gzip en modo binario o de texto, devolviendo un fileobject.

El argumento nombre de archivo puede ser un nombre de archivo real (un objeto str obytes), o un objeto de archivo existente para leer o escribir.

El argumento modo puede ser cualquiera de 'r', 'rb', 'a', 'ab','w', 'wb', 'x' o 'xb' para el modo binario, o 'rt','at', 'wt', o 'xt' para el modo texto. El valor por defecto es 'rb'.

El argumento compresslevel es un entero de 0 a 9, como para el constructorGzipFile.

Para el modo binario, esta función es equivalente al constructor GzipFile: GzipFile(filename, mode, compresslevel). En este caso, los argumentos de codificación, errores y nueva línea no deben ser proporcionados.

Para el modo texto, se crea un objeto GzipFile, y se envuelve en una instanciaio.TextIOWrapper con la codificación especificada, el comportamiento de tratamiento de errores y el/los final/es de línea.

Cambiado en la versión 3.3: Se ha añadido soporte para que el nombre de archivo sea un objeto de archivo, soporte para el modo texto, y los argumentos de codificación, errores y nueva línea.

Cambiado en la versión 3.4: Se ha añadido soporte para los modos 'x', 'xb' y 'xt'.

Cambiado en la versión 3.6: Acepta un objeto tipo ruta.

excepcióngzip.BadGzipFile¶

Una excepción lanzada para archivos gzip no válidos. Hereda de OSError.EOFError y zlib.error también puede ser levantado para gzipfiles inválidos.

Nuevo en la versión 3.8.

clasegzip.GzipFile(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)¶

Constructor de la clase GzipFile, que simula la mayoría de los métodos de un objeto archivo, con la excepción del método truncate(). Al menos uno de fileobj y filename debe tener un valor no trivial.

La nueva instancia de la clase se basa en fileobj, que puede ser un archivo normal, un objetoio.BytesIO, o cualquier otro objeto que simule un archivo. Por defecto es None, en cuyo caso filename se abre para proporcionar un objeto archivo.

Cuando fileobj no es None, el argumento filename sólo se utiliza para ser incluido en la cabecera del archivo gzip, que puede incluir el nombre original del archivo sin comprimir. Por defecto es el nombre de archivo de fileobj, si es discernible; de lo contrario, es la cadena vacía, y en este caso el nombre original del archivo no se incluye en la cabecera.

El argumento mode puede ser cualquiera de 'r', 'rb', 'a', 'ab', 'w','wb', 'x', o 'xb', dependiendo de si el archivo será leído o escrito. El valor por defecto es el modo de fileobj si es discernible; de lo contrario, el valor por defecto es 'rb'. En futuras versiones de Python no se utilizará el modo de fileobj. Es mejor especificar siempre el modo para la escritura.

Tenga en cuenta que el archivo siempre se abre en modo binario. Para abrir un archivo comprimido en modo texto, use open() (o envuelva su GzipFile con unio.TextIOWrapper).

El argumento compresslevel es un entero de 0 a 9 que controla el nivel de compresión; 1 es el más rápido y produce la menor compresión, y 9 es el más lento y produce la mayor compresión. 0 es sin compresión. El valor predeterminado es 9.

El argumento mtime es una marca de tiempo numérica opcional que se escribirá en el campo de la última modificación del flujo cuando se comprima. Sólo debe proporcionarse en modo de compresión. Si se omite o None, se utiliza la hora actual. Vea el atributo mtime para más detalles.

Llamar al método close() de un objeto GzipFile no cierra el archivoobj, ya que podría desear añadir más material después de los datos comprimidos. Esto también le permite pasar un objeto io.BytesIO abierto para escribir como fileobj, y recuperar el buffer de memoria resultante utilizando el método getvalue() del objeto io.BytesIO.

GzipFile soporta la interfaz io.BufferedIOBase, incluyendo la iteración y la sentencia with. Sólo el método truncate() no está implementado.

GzipFile también proporciona el siguiente método y atributo:

peek(n)¶

Lee n bytes sin comprimir sin avanzar la posición del archivo.Como máximo se realiza una única lectura en el flujo comprimido para satisfacer la llamada. El número de bytes devueltos puede ser mayor o menor que el solicitado.

Nota

Aunque la llamada a peek() no cambia la posición de archivo del GzipFile, puede cambiar la posición del objeto de archivo subyacente (por ejemplo si el GzipFile fue construido con el parámetrofileobj).

Nuevo en la versión 3.2.

mtime¶

Cuando se descomprime, el valor del campo de tiempo de la última modificación en la cabecera leída más recientemente puede ser leído desde este atributo, como un entero. El valor inicial antes de leer cualquier cabecera es None.

Todos los flujos comprimidos con gzip deben contener este campo de hora. Algunos programas, como gunzip, hacen uso de la marca de tiempo. El formato es el mismo que el valor de retorno de time.time() y el atributo st_mtime del objeto devuelto por os.stat().

Cambiado en la versión 3.1: Se ha añadido soporte para la sentencia with, junto con el argumento del constructor de tiempo y el atributo mtime.

Cambiado en la versión 3.2: Se ha añadido soporte para archivos con relleno cero y no buscables.

Cambiado en la versión 3.3: Se ha implementado el método io.BufferedIOBase.read1().

Cambiado en la versión 3.4: Se ha añadido soporte para los modos 'x' y 'xb'.

Cambiado en la versión 3.5: Se ha añadido soporte para escribir objetos tipobytes arbitrarios.El método read() acepta ahora un argumento deNone.

Cambiado en la versión 3.6: Acepta un objeto tipo ruta.

Depreciado desde la versión 3.9: Abrir GzipFile para escribir sin especificar el argumento mod está desaprobado.

gzip.compress(data, compresslevel=9, *, mtime=None)¶

Comprime los datos, devolviendo un objeto bytes que contiene los datos comprimidos. compresslevel y mtime tienen el mismo significado que en el constructor GzipFile anterior.

Nuevo en la versión 3.2.

Cambiado en la versión 3.8: Se ha añadido el parámetro mtime para una salida reproducible.

gzip.decompress(datos)¶

Descomprime los datos, devolviendo un objeto bytes que contiene los datos sin comprimir.

Nuevo en la versión 3.2.

Ejemplos de uso¶

Ejemplo de cómo leer un archivo comprimido:

import gzipwith gzip.open('/home/joe/file.txt.gz', 'rb') as f: file_content = f.read()

Ejemplo de cómo crear un archivo GZIP comprimido:

import gzipcontent = b"Lots of content here"with gzip.open('/home/joe/file.txt.gz', 'wb') as f: f.write(content)

Ejemplo de cómo comprimir GZIP un archivo existente:

import gzipimport shutilwith open('/home/joe/file.txt', 'rb') as f_in: with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out: shutil.copyfileobj(f_in, f_out)

Ejemplo de cómo comprimir con GZIP una cadena binaria:

import gzips_in = b"Lots of content here"s_out = gzip.compress(s_in)

Ver también

Módulo zlib

El módulo básico de compresión de datos necesario para soportar el formato de archivo gzip.

Interfaz de línea de comandos¶

El módulo gzipproporciona una sencilla interfaz de línea de comandos para comprimir archivos ordecompress.

Una vez ejecutado, el módulo gzipconserva el/los archivo/s de entrada.

Cambiado en la versión 3.8: Añadir una nueva interfaz de línea de comandos con un usage.By defecto, cuando se ejecutará la CLI, el nivel de compresión por defecto es 6.

Opciones de línea de comandos¶

file¶

Si no se especifica el archivo, leer de sys.stdin.

--fast¶

Indica el método de compresión más rápido (menos compresión).

--best¶

Indica el método de compresión más lento (mejor compresión).

-d, --decompress¶

Descomprime el archivo dado.

-h, --help¶

Muestra el mensaje de ayuda.

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Archivos

  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress