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)
См. также
-
Modulezlib -
Основной модуль сжатия данных, необходимый для поддержки формата файлов gzip.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/gzip.html