gzip — compresie și decompresie gzip¶
Acest modul permite compresia și decompresia datelor binare cu algoritmul DEFLATE folosit de formatul de fișier gzip. El oferă funcții ajutătoare one-shot compress()/decompress() și un wrapper de streaming GzipFile în jurul unui obiect fișier sau flux subiacent.
Notă
Preferați să folosiți deflate.DeflateIO în locul funcțiilor din acest modul, deoarece oferă o interfață de streaming pentru compresie și decompresie, care este convenabilă și mai eficientă din punct de vedere al memoriei atunci când citiți sau scrieți date comprimate într-un fișier, socket sau flux.
Disponibilitate:
Acest modul nu este inclus pe OpenMV Cam în mod implicit, deoarece duplică funcționalitatea deja oferită de modulul
deflate.O copie poate fi instalată (sau integrată într-un firmware personalizat) din micropython-lib (sursă). Consultați Gestionarea pachetelor pentru mai multe informații. Această documentație descrie acel modul.
Compresia este disponibilă doar dacă compresia este disponibilă în modulul încorporat
deflate– adică, nu pe camerele OpenMV Cam bazate pe STM32 (consultați nota sa de disponibilitate de mai sus).
Funcții¶
Clase¶
- class gzip.GzipFile(*, fileobj, mode: str)¶
Această clasă poate fi folosită pentru a încapsula un fileobj care este orice obiect asemănător unui flux, cum ar fi un fișier, socket sau flux (inclusiv
io.BytesIO). Este ea însăși un flux și implementează metodele standard read/readinto/write/close.Când argumentul mode este
"rb", citirile din instanța GzipFile vor decomprima datele din fluxul subiacent și vor returna date decomprimate.Dacă suportul pentru compresie este activat, atunci argumentul mode poate fi setat la
"wb", iar scrierile în instanța GzipFile vor fi comprimate și scrise în fluxul subiacent.În mod implicit, clasa GzipFile va citi și scrie date folosind formatul de fișier gzip, inclusiv un antet și un subsol cu sumă de control și o dimensiune a ferestrei de 512 octeți.
Argumentele file, compresslevel și mtime nu sunt acceptate. fileobj și mode trebuie să fie întotdeauna specificate ca argumente cu cuvânt-cheie.
Exemple¶
Un caz de utilizare tipic pentru gzip.GzipFile este citirea sau scrierea unui fișier comprimat din stocare:
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)
Pentru îndrumări privind lucrul cu surse gzip și alegerea dimensiunii ferestrei, consultați nota de la sfârșitul documentației deflate.