Python

Модуль Python gzip

Модуль Python gzip

В этом уроке мы узнаем, как можно использовать Python gzip модуль для чтения и записи в сжатые файлы в Python. Самая большая функция, которую предоставляет нам этот модуль, заключается в том, что мы можем рассматривать сжатые файлы как обычные объекты File, что избавляет нас от сложности управления файлами и их жизненным циклом в нашем коде и позволяет нам сосредоточиться на основной бизнес-логике программы.В gzip модуль предоставляет нам почти те же функции, что и программы GNU, такие как распаковать а также gzip.

Запись сжатых файлов с помощью open ()

Мы начнем с базового примера, в котором мы можем создать файл gzip и записать в него некоторые данные. Для этого нам нужно создать файл и открыть его в режиме записи, чтобы в него можно было вставить данные. Давайте посмотрим на пример программы, с помощью которой мы можем записывать данные в файл gzip:

импортировать gzip
import io
импорт ОС
output_file = 'linxhint_demo.текст.gz '
write_mode = 'WB'
с gzip.open (output_file, write_mode) как вывод:
с io.TextIOWrapper (output, encoding = 'utf-8') как кодировать:
кодировать.write ('Мы можем записать в файл все, что захотим.\ n ')
печать (выходной_файл,
'содержит', os.stat (выходной_файл).st_size, 'байты')
Операционные системы.система ('файл -b --mime '.формат (выходной_файл))

Вот что мы получаем с помощью этой команды:

Запись в zip-файл

Если вы теперь посмотрите на структуру папок, в которой вы выполнили этот скрипт, должен появиться новый файл с именем, которое мы предоставили в нашей программе выше.

Запись нескольких строк в сжатый файл

Мы также можем записать несколько строк или фактически любое количество строк в наш файл gzip очень похожим образом, как мы это делали в предыдущем примере. Чтобы сделать этот пример другим, мы также будем использовать модуль itertools. Посмотрим на пример программы:

импортировать gzip
import io
импорт ОС
импортировать itertools
output_file = 'linxhint_demo.текст.gz '
write_mode = 'WB'
с gzip.open (output_file, write_mode) как вывод:
с io.TextIOWrapper (вывод, кодировка = 'utf-8') как код:
приложить.письма (
itertools.repeat ('LinuxHint, повторение той же строки!.\ n ', 10)
)
Операционные системы.система ('gzcat linxhint_demo.текст.gz ')

Посмотрим, что выводит эта команда:

Написание нескольких строк

Чтение сжатых данных

Мы также можем прочитать сжатый файл, который мы создали в последнем примере, с помощью модуля gzip с очень простым вызовом открыто функция:

импортировать gzip
import io
импорт ОС
file_name = 'linxhint_demo.текст.gz '
file_mode = 'rb'
с gzip.открыть (имя_файла, режим_файла) как файл_входа:
с io.TextIOWrapper (input_file, encoding = 'utf-8') как dec:
печать (декабрь.читать())

Вот что мы получаем с помощью этой команды:

Чтение файла gzip

Чтение потоков

Из-за того, что текстовые файлы могут быть очень большими по размеру, разумно открывать эти файлы в потоке, а не загружать весь файл в одном объекте, который занимает много системной памяти и в некоторых случаях может даже вызвать процесс. полностью рухнуть. Давайте посмотрим на пример программы, которая считывает данный сжатый файл в потоке:

импортировать gzip
из io импорт BytesIO
импорт binascii
mode_write = 'wb'
mode_read = 'rb'
non_compressed = b'Повторенная строка x раз.\ n '* 8
print ('Несжатые данные:', len (несжатые))
печать (без сжатия)
buf = BytesIO ()
с gzip.GzipFile (mode = mode_write, fileobj = buf) как файл:
файл.написать (без сжатия)
сжатый = buf.getvalue ()
print ('Сжатые данные:', len (сжатые))
печать (binascii.hexlify (сжатый))
in_buffer = BytesIO (сжатый)
с gzip.GzipFile (mode = mode_read, fileobj = in_buffer) как файл:
read_data = файл.читать (len (несжатый))
print ('\ nЧитаем снова:', len (read_data))
печать (прочитанные_данные)

Посмотрим, что выводит эта команда:

Чтение файла gzip в потоке

Хотя программа была немного длинной, на самом деле мы просто использовали модули Python, чтобы открыть файл и передать содержимое на консоль с помощью буферизованного объекта чтения.

Заключение

В этом уроке мы рассмотрели, как мы можем использовать модуль Python gzip для сжатия и распаковки файлов в Python. Самая большая особенность, которую предоставляет нам эта библиотека, заключается в том, что мы можем рассматривать сжатые файлы как обычные объекты File.

Прочтите больше сообщений на основе Python здесь.

Установите последнюю версию игры OpenRA Strategy в Ubuntu Linux
OpenRA - это игровой движок Libre / Free Real Time Strategy, воссоздающий ранние игры Westwood, такие как классическая Command & Conquer: Red Alert. Р...
Установите последнюю версию эмулятора Dolphin для Gamecube и Wii в Linux
Эмулятор Dolphin позволяет вам играть в выбранные вами игры Gamecube и Wii на персональных компьютерах (ПК) Linux. Являясь свободно доступным игровым...
Как использовать чит-движок GameConqueror в Linux
В статье содержится руководство по использованию чит-движка GameConqueror в Linux. Многие пользователи, играющие в игры на Windows, часто используют п...