Módulo Python GZIP

Módulo Python GZIP

Nesta lição, estudaremos sobre como podemos usar o Python gzip módulo para ler e escrever nos arquivos compactados no Python. O maior recurso que este módulo nos fornece é que podemos tratar arquivos compactados como objetos de arquivo normais que nos salvam da complexidade do gerenciamento de arquivos e seu ciclo de vida em nosso código e nos permite focar na lógica de negócios principal do programa.O gzip O módulo nos fornece quase os mesmos recursos que os programas GNU, como Gunzip e gzip.

Escrevendo arquivos compactados com open ()

Começaremos com um exemplo básico em que podemos criar um arquivo gzip e escrever alguns dados nele. Para isso, precisamos fazer um arquivo e abrir com o modo de gravação para que os dados possam ser inseridos nele. Vejamos um programa de amostra com o qual podemos escrever dados em um arquivo GZIP:

importar gzip
importar io
OS de importação
output_file = 'linxhint_demo.TXT.gz '
write_mode = 'wb'
com gzip.Open (output_file, write_mode) como saída:
com io.Textiowrapper (saída, coding = 'utf-8') como codificina:
codificar.Write ('Podemos escrever o que quisermos para o arquivo.\ n ')
Imprima (output_File,
'contém', os.stat (output_file).st_size, 'bytes')
OS.System ('arquivo -b -mime '.formato (output_file))

Aqui está o que recebemos com este comando:

Escrevendo no arquivo zip

Se agora você der uma olhada na estrutura da pasta em que executou este script, deve haver um novo arquivo nomeado com o que fornecemos em nosso programa acima.

Escrevendo várias linhas em um arquivo comprimido

Também podemos escrever várias linhas ou, na verdade, qualquer número de linhas em nosso arquivo GZIP de uma maneira muito semelhante ao que fizemos no exemplo anterior. Para tornar este exemplo diferente, usaremos o módulo ITERTOOLS também. Vejamos o programa de amostra:

importar gzip
importar io
OS de importação
importar itterols
output_file = 'linxhint_demo.TXT.gz '
write_mode = 'wb'
com gzip.Open (output_file, write_mode) como saída:
com io.Textiowrapper (saída, coding = 'utf-8') como ENC:
ENC.Writelines (
itetools.Repita ('Linuxhint, repetindo a mesma linha!.\ n ', 10)
)
OS.System ('Gzcat Linxhint_demo.TXT.gz ')

Vamos ver a saída para este comando:

Escrevendo várias linhas

Leitura de dados compactados

Também podemos ler o arquivo compactado que criamos no último exemplo usando o módulo GZIP com uma chamada muito simples para abrir função:

importar gzip
importar io
OS de importação
file_name = 'linxhint_demo.TXT.gz '
file_mode = 'rb'
com gzip.Abrir (file_name, file_mode) como input_file:
com io.Textiowrapper (input_file, coding = 'utf-8') como dez:
Imprimir (dez.ler())

Aqui está o que recebemos com este comando:

Lendo um arquivo GZIP

Lendo fluxos

Devido ao fato de que os arquivos de texto podem ser muito grandes em tamanho, é inteligente abrir esses arquivos em um fluxo, em vez de carregar o arquivo completo em um único objeto que ocupa muita memória do sistema e, em alguns casos, pode até causar o processo para travar completamente. Vejamos um programa de amostra que leu o arquivo compactado fornecido em um fluxo:

importar gzip
de IO Import bytesio
Importar binascii
mode_write = 'wb'
mode_read = 'rb'
Non_compressed = B'Epletouated Line x Times.\ n ' * 8
Print ('Dados não compactados:', Len (não_compressado))
Imprimir (não_compressado)
BUF = bytesio ()
com gzip.Gzipfile (mode = mode_write, fileobj = buf) como arquivo:
arquivo.Write (não_compressado)
comprimido = buf.Obter valor()
Print ('Dados compactados:', Len (compactado))
Impressão (binascii.Hexlify (comprimido))
in_buffer = bytesio (comprimido)
com gzip.Gzipfile (mode = mode_read, fileobj = in_buffer) como arquivo:
read_data = arquivo.Leia (Len (não_compressado))
Print ('\ Nering It Again:', Len (read_data))
Print (read_data)

Vamos ver a saída para este comando:

Lendo o arquivo GZIP em um fluxo

Embora o programa tenha sido um pouco longo, na verdade usamos os módulos Python abrir o arquivo e transmitir o conteúdo para o console com um objeto de leitor em buffer.

Conclusão

Nesta lição, analisamos como podemos usar o módulo Python GZIP para compactar e descomprimir arquivos no Python. O maior recurso que essa biblioteca nos fornece é que podemos tratar arquivos compactados como objetos normais de arquivo.

Leia mais postagens baseadas em Python aqui.