Рубрики
Без рубрики

Python HowTo – Использование модуля gzip в Python

Привет всем! В сегодняшней статье мы рассмотрим модуль gzip в Python.

Автор оригинала: 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 .

Рекомендации