Spec-Zone.ru › Python 2.7

gzip — Поддержка файлов gzip

Исходный код: Lib/gzip.py

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

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

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

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

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

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

Конструктор класса 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 — целое число от 0 до 9, управляющее уровнем сжатия; 1 — самый быстрый и сжимает наименьше, 9 — самый медленный и сжимает больше всего. 0 — без сжатия. По умолчанию используется значение 9.

Аргумент mtime — необязательная числовая метка времени, которая записывается в поток при сжатии. Все сжатые потоки gzip должны содержать метку времени. Если опущено или None, используется текущее время. Этот модуль игнорирует метку времени при распаковке; однако некоторые программы, такие как gunzip, используют её. Формат метки времени такой же, как у возвращаемого значения time.time() и атрибута st_mtime объекта, возвращённого os.stat().

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

GzipFile поддерживает итерацию и оператор with.

Изменено в версии 2.7: Добавлена поддержка оператора with.

Изменено в версии 2.7: Добавлена поддержка файлов с нулевым заполнением.

Добавлена в версии 2.7: Аргумент mtime.

gzip.open(filename[, mode[, compresslevel]])

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

1. Примеры использования

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

import gzip
with gzip.open('file.txt.gz', 'rb') as f:
    file_content = f.read()

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

import gzip
content = "Lots of content here"
with gzip.open('file.txt.gz', 'wb') as f:
    f.write(content)

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

import gzip
import shutil
with open('file.txt', 'rb') as f_in, gzip.open('file.txt.gz', 'wb') as f_out:
    shutil.copyfileobj(f_in, f_out)

См. также

Module zlib

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

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/gzip.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API