Документация Python неофициальный перевод
Содержание страницы

gzip – Поддержка gzip-файловgzip – Support for gzip files

Этот модуль предоставляет простой интерфейс для сжатия и распаковки файлов, подобно тому, как это делают программы GNU gzip и gunzip.

Сжатие данных обеспечивается модулем zlib.

Модуль gzip предоставляет класс GzipFile, который смоделирован по образцу файлового объекта Python. Класс GzipFile читает и записывает файлы в формате gzip, автоматически сжимая или распаковывая данные, так что он выглядит как обычный файловый объект.

Обратите внимание, что дополнительные форматы файлов, которые могут быть распакованы программами gzip и gunzip, например, созданные программами compress и pack, не поддерживаются этим модулем.

О других форматах архивов см. модули bz2, zipfile и tarfile.

Модуль определяет следующие элементы:

class gzip.GzipFile([filename[, mode[, compresslevel[, fileobj]]]])

Конструктор класса GzipFile, который имитирует большинство методов файлового объекта, за исключением методов readinto() и truncate(). По крайней мере один из fileobj и filename должен иметь непустое значение.

Новый экземпляр класса основан на fileobj, который может быть обычным файлом, объектом StringIO или любым другим объектом, имитирующим файл. По умолчанию он равен None, и в этом случае filename открывается для предоставления файлового объекта.

Если fileobj не равен None, аргумент filename используется только для включения в заголовок файла gzip, который может содержать исходное имя несжатого файла. По умолчанию он равен имени файла fileobj, если оно определимо; в противном случае он равен пустой строке, и в этом случае исходное имя файла не включается в заголовок.

Аргумент mode может быть одним из 'r', 'rb', 'a', 'ab', 'w', или 'wb', в зависимости от того, будет ли файл читаться или записываться. Значение по умолчанию – режим fileobj, если его можно определить; в противном случае – 'rb'. Если он не задан, к режиму будет добавлен флаг 'b' для открытия файла в бинарном режиме для обеспечения переносимости между платформами.

Аргумент compresslevel – целое число от 1 до 9, управляющее уровнем сжатия; 1 – самый быстрый и даёт наименьшее сжатие, а 9 – самый медленный и даёт наибольшее сжатие. По умолчанию 9.

Вызов метода close() объекта GzipFile не закрывает fileobj, поскольку может потребоваться добавить ещё данные после сжатых. Это также позволяет передать объект StringIO, открытый для записи, в качестве fileobj, и получить результирующий буфер в памяти с помощью метода getvalue() объекта StringIO.

gzip.open(filename[, mode[, compresslevel]])
Это сокращение для GzipFile(filename, mode, compresslevel). Аргумент filename обязателен; mode по умолчанию равен 'rb', а compresslevel по умолчанию равен 9.

Примеры использованияExamples of usage

Пример чтения сжатого файла:

import gzip
f = gzip.open('/home/joe/file.txt.gz', 'rb')
file_content = f.read()
f.close()

Пример создания сжатого файла GZIP:

import gzip
content = "Lots of content here"
f = gzip.open('/home/joe/file.txt.gz', 'wb')
f.write(content)
f.close()

Пример сжатия существующего файла в формате GZIP:

import gzip
f_in = open('/home/joe/file.txt', 'rb')
f_out = gzip.open('/home/joe/file.txt.gz', 'wb')
f_out.writelines(f_in)
f_out.close()
f_in.close()

См. также

Модуль zlib
Базовый модуль сжатия данных, необходимый для поддержки формата файлов gzip.