Автор оригинала: Pankaj Kumar.
Привет всем! В сегодняшней статье мы рассмотрим модуль gzip в Python.
Этот модуль дает нам простой способ работы с файлами gzip ( .gz
). Это работает очень похоже на команды утилиты Linux gzip
и gunzip
.
Давайте посмотрим, как мы можем эффективно использовать этот модуль, используя несколько наглядных примеров!
Использование модуля gzip в Python
Этот модуль предоставляет нам высокоуровневые функции, такие как open()
, compress()
и decompress()
, для быстрого обращения с этими расширениями файлов.
По сути, это будет просто открытие файла!
Чтобы импортировать этот модуль, вам потребуется следующая инструкция:
import gzip
Нет необходимости устанавливать этот модуль, так как он является частью стандартной библиотеки! Давайте начнем с работы с некоторыми файлами gzip.
Запись в сжатый файл
Мы можем использовать метод gzip.open()
для прямого открытия файлов .gz
и записи в эти сжатые файлы!
import gzip import os import io name = 'sample.txt.gz' with gzip.open(name, 'wb') as output: # We cannot directly write Python objects like strings! # We must first convert them into a bytes format using io.BytesIO() and then write it with io.TextIOWrapper(output, encoding='utf-8') as encode: encode.write('This is a sample text') # Let's print the updated file stats now print(f"The file {name} now contains {os.stat(name).st_size} bytes")
Здесь обратите внимание, что мы не можем напрямую писать объекты Python, такие как строки!
Сначала мы должны преобразовать их в формат байтов с помощью io.TextIOWrapper ()
, а затем напишите его, используя эту функцию-оболочку. Вот почему мы открываем файл в режиме двоичной записи ( wb
).
Если вы запустите программу, вы получите результат ниже.
Выход
The file sample.txt.gz now contains 57 bytes
Кроме того, вы могли бы заметить, что файл sample.txt.gz
создается в вашем текущем каталоге. Итак, мы успешно записали в этот сжатый файл.
Давайте теперь попробуем распаковать его и прочитать его содержимое.
Чтение сжатых данных из файла gzip
Теперь, подобно функции write()
через оболочку, мы также можем read()
использовать ту же функцию.
import gzip import os import io name = 'sample.txt.gz' with gzip.open(name, 'rb') as ip: with io.TextIOWrapper(ip, encoding='utf-8') as decoder: # Let's read the content using read() content = decoder.read() print(content)
Выход
This is a sample text
Действительно, мы смогли вернуть тот же текст, который написали изначально!
Сжатие Данных
Еще одной полезной особенностью этого модуля является то, что мы можем эффективно сжимать данные с помощью gzip
.
Если у нас есть много байтового содержимого в качестве входных данных, мы можем использовать функцию gzip.compress()
для его сжатия.
import gzip ip = b"This is a large wall of text. This is also from AskPython" out = gzip.compress(ip)
В этом случае двоичная строка будет сжата с помощью gzip.compress
.
Вывод
В этой статье мы узнали о том, как мы можем использовать модуль gzip в Python для чтения и записи в файлы .gz
.
Рекомендации
- Модуль Python gzip Документация
- Статья JournalDev о модуле Python gzip