gzip — сжатие и распаковка gzip¶
Этот модуль позволяет сжимать и распаковывать двоичные данные с помощью алгоритма DEFLATE, используемого форматом файлов gzip. Он предоставляет одноразовые вспомогательные функции compress()/decompress() и потоковую обёртку GzipFile вокруг нижележащего файла или потокового объекта.
Примечание
Предпочтительнее использовать deflate.DeflateIO вместо функций этого модуля, так как она предоставляет потоковый интерфейс к сжатию и распаковке, что удобно и более эффективно по памяти при чтении или записи сжатых данных в файл, сокет или поток.
Доступность:
Этот модуль не включён в OpenMV Cam по умолчанию, так как он дублирует функциональность, уже предоставляемую модулем
deflate.Копию можно установить (или вшить в пользовательскую прошивку) из micropython-lib (исходный код). Дополнительные сведения см. в Управление пакетами. Эта документация описывает указанный модуль.
Сжатие доступно только в том случае, если сжатие доступно во встроенном модуле
deflate— то есть не на OpenMV Cam на базе STM32 (см. примечание о доступности выше).
Функции¶
Классы¶
- class gzip.GzipFile(*, fileobj, mode: str)¶
Этот класс можно использовать для обёртывания объекта fileobj, который является любым потокоподобным объектом, таким как файл, сокет или поток (включая
io.BytesIO). Он сам является потоком и реализует стандартные методы read/readinto/write/close.Когда аргумент mode равен
"rb", чтение из экземпляра GzipFile распаковывает данные в нижележащем потоке и возвращает распакованные данные.Если поддержка сжатия включена, то аргументу mode можно задать значение
"wb", и записи в экземпляр GzipFile будут сжиматься и записываться в нижележащий поток.По умолчанию класс GzipFile читает и записывает данные с использованием формата файлов gzip, включая заголовок и концевик с контрольной суммой и размером окна 512 байт.
Аргументы file, compresslevel и mtime не поддерживаются. Аргументы fileobj и mode всегда должны указываться как именованные аргументы.
Примеры¶
Типичный сценарий использования gzip.GzipFile — чтение или запись сжатого файла из хранилища:
import gzip
# Reading:
with open("data.gz", "rb") as f:
with gzip.GzipFile(fileobj=f, mode="rb") as g:
# Use g.read(), g.readinto(), etc.
# Same, but using gzip.open:
with gzip.open("data.gz", "rb") as f:
# Use f.read(), f.readinto(), etc.
# Writing:
with open("data.gz", "wb") as f:
with gzip.GzipFile(fileobj=f, mode="wb") as g:
# Use g.write(...) etc
# Same, but using gzip.open:
with gzip.open("data.gz", "wb") as f:
# Use f.write(...) etc
# Write a dictionary as JSON in gzip format, with a
# small (64 byte) window size.
config = { ... }
with gzip.open("config.gz", "wb") as f:
json.dump(config, f)
Рекомендации по работе с источниками gzip и выбору размера окна см. в примечании в конце документации по deflate.