Este grupo especializado pasados varios días de investigación y de juntar de información, obtuvieron los datos necesarios, nuestro deseo es que te sea útil para tu plan.
Código fuente:Lib / gzip.py
Este módulo proporciona una interfaz simple para comprimir y descomprimir archivos al igual que los programas GNU. gzip y gunzip haría.
La compresión de datos la proporciona el zlib
módulo.
los gzip
módulo proporciona el GzipFile
clase, así como la open()
, compress()
y decompress()
funciones de conveniencia. los GzipFile
la clase lee y escribe gzip-formatear archivos, comprimiendo o descomprimiendo automáticamente los datos para que se vea como un ordinario objeto de archivo.
Tenga en cuenta que los formatos de archivo adicionales que se pueden descomprimir gzip y gunzip programas, como los producidos por comprimir y paquete, 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)
-
Abra un archivo comprimido con gzip en modo binario o texto, devolviendo un objeto de archivo.
los nombre del archivo El argumento puede ser un nombre de archivo real (un
str
obytes
objeto), o un objeto de archivo existente para leer o escribir.los modo El argumento puede ser cualquiera de
'r'
,'rb'
,'a'
,'ab'
,'w'
,'wb'
,'x'
o'xb'
para modo binario, o'rt'
,'at'
,'wt'
, o'xt'
para el modo de texto. El valor predeterminado es'rb'
.los nivel de compresión argumento es un número entero de 0 a 9, como para el
GzipFile
constructor.Para el modo binario, esta función es equivalente a la
GzipFile
constructor:GzipFile(filename, mode, compresslevel)
. En este caso, el codificacion, errores y nueva línea no se deben proporcionar argumentos.Para el modo de texto, un
GzipFile
El objeto se crea y se envuelve en unio.TextIOWrapper
instancia con la codificación especificada, el comportamiento de manejo de errores y las terminaciones de línea.Modificado en la versión 3.3: Soporte agregado para nombre del archivo siendo un objeto de archivo, soporte para el modo de texto y el codificacion, errores y nueva línea argumentos.
Modificado en la versión 3.4: Soporte agregado para el
'x'
,'xb'
y'xt'
modos.Modificado en la versión 3.6: Acepta un objeto parecido a una ruta.
exception gzip.BadGzipFile
-
Se generó una excepción para archivos gzip no válidos. Hereda
OSError
.EOFError
yzlib.error
también se puede generar para archivos gzip no válidos.Nuevo en la versión 3.8.
class gzip.GzipFile(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)
-
Constructor para el
GzipFile
clase, que simula la mayoría de los métodos de una objeto de archivo, con la excepción deltruncate()
método. Al menos uno de fileobj y nombre del archivo debe recibir un valor no trivial.La nueva instancia de clase se basa en fileobj, que puede ser un archivo normal, un
io.BytesIO
objeto, o cualquier otro objeto que simule un archivo. Por defecto esNone
, en ese caso nombre del archivo se abre para proporcionar un objeto de archivo.Cuando fileobj no es
None
, los nombre del archivo El argumento solo se usa para ser incluido en el gzip encabezado del archivo, que puede incluir el nombre de archivo original del archivo sin comprimir. Por defecto es el nombre de archivo de fileobj, si es perceptible; de lo contrario, el valor predeterminado es el vacío stringy, en este caso, el nombre del archivo original no se incluye en el encabezado.los modo El argumento puede ser cualquiera de
'r'
,'rb'
,'a'
,'ab'
,'w'
,'wb'
,'x'
, o'xb'
, dependiendo de si el archivo se leerá o se escribirá. El predeterminado es el modo de fileobj si es perceptible; de lo contrario, el valor predeterminado es'rb'
. En el futuro, Python lanza el modo de fileobj no se utilizará. Es mejor especificar siempre 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 envuelve tuGzipFile
con unio.TextIOWrapper
).los nivel de compresión el argumento es un número entero de
0
para9
controlar el nivel de compresión;1
es más rápido y produce la menor compresión, y9
es más lento y produce la mayor compresión.0
no hay compresión. El valor predeterminado es9
.los mtime El argumento es una marca de tiempo numérica opcional que se escribirá en el campo de hora de la última modificación en la secuencia al comprimir. Solo debe proporcionarse en modo de compresión. Si se omite o
None
, se utiliza la hora actual. Ver elmtime
attribute para más detalles.Llamando a un
GzipFile
objetosclose()
el método no cierra fileobj, ya que es posible que desee agregar más material después de los datos comprimidos. Esto también le permite pasar unio.BytesIO
objeto abierto para escribir como fileobjy recupere el búfer de memoria resultante utilizando elio.BytesIO
objetosgetvalue()
método.GzipFile
apoya elio.BufferedIOBase
interfaz, incluida la iteración y lawith
declaración. Solo eltruncate()
el método no está implementado.GzipFile
también proporciona el siguiente método y attribute:peek(n)
-
Leer norte bytes sin comprimir sin avanzar la posición del archivo. A lo sumo, se realiza una sola lectura en el flujo comprimido para satisfacer la llamada. El número de bytes devueltos puede ser mayor o menor que el solicitado.
Nota
Mientras llama
peek()
no cambia la posición del archivo delGzipFile
, puede cambiar la posición del objeto de archivo subyacente (por ejemplo, si elGzipFile
fue construido con el fileobj parámetro).Nuevo en la versión 3.2.
mtime
-
Al descomprimir, el valor del campo de hora de la última modificación en el encabezado leído más recientemente se puede leer de este attribute, como un número entero. El valor inicial antes de leer cualquier encabezado es
None
.Todos gzip Se requiere que los flujos comprimidos contengan este campo de marca de tiempo. Algunos programas, como gunzip, haga uso de la marca de tiempo. El formato es el mismo que el valor de retorno de
time.time()
y elst_mtime
attribute del objeto devuelto poros.stat()
.
Modificado en la versión 3.1: Soporte para el
with
se agregó la declaración, junto con el mtime argumento del constructor ymtime
attribute.Modificado en la versión 3.2: Se agregó soporte para archivos con relleno de ceros y que no se pueden buscar.
Modificado en la versión 3.3: los
io.BufferedIOBase.read1()
El método ahora está implementado.Modificado en la versión 3.4: Soporte agregado para el
'x'
y'xb'
modos.Modificado en la versión 3.5: Soporte agregado para escribir arbitrario objetos similares a bytes. los
read()
El método ahora acepta un argumento deNone
.Modificado en la versión 3.6: Acepta un objeto parecido a una ruta.
En desuso desde la versión 3.9: Apertura
GzipFile
para escribir sin especificar el modo El argumento está en desuso.
gzip.compress(data, compresslevel=9, *, mtime=None)
-
Comprimir el datos, devolviendo un
bytes
objeto que contiene los datos comprimidos. nivel de compresión y mtime tienen el mismo significado que en elGzipFile
constructor de arriba.Nuevo en la versión 3.2.
Modificado en la versión 3.8: Agregó el mtime parámetro para una salida reproducible.
gzip.decompress(data)
-
Descomprime el datos, devolviendo un
bytes
objeto 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 gzip with gzip.open('/home/joe/file.txt.gz','rb')as f: file_content = f.read()
Ejemplo de cómo crear un archivo GZIP comprimido:
import gzip content =b"Lots of content here"with gzip.open('/home/joe/file.txt.gz','wb')as f: f.write(content)
Ejemplo de cómo comprimir con GZIP un archivo existente:
import gzip import shutil withopen('/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 GZIP un binario string:
import gzip s_in =b"Lots of content here" s_out = gzip.compress(s_in)
Ver también
Module
zlib
-
El módulo de compresión de datos básico necesario para admitir gzip formato de archivo.
Interfaz de línea de comandos
los gzip
El módulo proporciona una interfaz de línea de comandos simple para comprimir o descomprimir archivos.
Una vez ejecutado el gzip
El módulo mantiene los archivos de entrada.
Modificado en la versión 3.8: Agregue una nueva interfaz de línea de comandos con un uso. De forma predeterminada, cuando ejecutará la CLI, el nivel de compresión predeterminado es 6.
Opciones de línea de comando
file
-
Si expediente no se especifica, se lee 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
-
Muestre el mensaje de ayuda.
Tienes la opción de confirmar nuestra función añadiendo un comentario y puntuándolo te estamos eternamente agradecidos.