gzip — стиснення та розпакування gzip¶
Цей модуль дозволяє стискати та розпаковувати бінарні дані за допомогою алгоритму DEFLATE, що використовується форматом файлів gzip. Він надає допоміжні функції одноразового стиснення compress()/decompress() та потокову обгортку GzipFile навколо базового об’єкта файлу або потоку.
Примітка
Надавайте перевагу використанню deflate.DeflateIO замість функцій у цьому модулі, оскільки він надає потоковий інтерфейс для стиснення та розпакування, що є зручним та більш ефективним за пам’яттю при читанні або записі стиснених даних у файл, сокет або потік.
Доступність:
Цей модуль не включений до OpenMV Cam за замовчуванням, оскільки дублює функціональність, що вже надається модулем
deflate.Копію можна встановити (або заморозити у спеціальну мікропрограму) з micropython-lib (джерело). Дивіться Керування пакетами для додаткової інформації. Ця документація описує цей модуль.
Стиснення доступне лише якщо воно підтримується вбудованим модулем
deflate— тобто недоступне на OpenMV Cams на базі 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.