gzip — gzip tömörítés és kicsomagolás

Ez a modul lehetővé teszi a bináris adatok tömörítését és kicsomagolását a gzip fájlformátum által használt DEFLATE algoritmussal. Egylépéses compress()/decompress() segédfüggvényeket és egy folyamszerű (streaming) GzipFile csomagolót biztosít egy mögöttes fájl- vagy folyamobjektum köré.

Megjegyzés

Inkább a deflate.DeflateIO osztályt használd az ebben a modulban lévő függvények helyett, mivel az folyamszerű (streaming) interfészt biztosít a tömörítéshez és kicsomagoláshoz, ami kényelmes és memóriahatékonyabb, amikor tömörített adatokat olvasol vagy írsz fájlba, socketbe vagy folyamba.

Elérhetőség:

  • Ez a modul alapértelmezetten nincs benne az OpenMV Cam-ben, mivel olyan funkcionalitást duplikál, amelyet a deflate modul már biztosít.

  • Egy másolat telepíthető (vagy egyéni firmware-be befagyasztható) a micropython-lib-ből (forrás). További információkért lásd: Csomagkezelés. Ez a dokumentáció azt a modult írja le.

  • A tömörítés csak akkor érhető el, ha a beépített deflate modulban elérhető a tömörítés – azaz nem az STM32-alapú OpenMV Cam-eken (lásd a fenti elérhetőségi megjegyzést).

Függvények

gzip.open(filename: str, mode: str, /) GzipFile

A beépített open() köré épülő csomagoló, amely egy GzipFile példányt ad vissza.

gzip.decompress(data: bytes, /) bytes

Kicsomagolja a data adatot egy bytes objektumba.

gzip.compress(data: bytes, /) bytes

Tömöríti a data adatot egy bytes objektumba.

Osztályok

class gzip.GzipFile(*, fileobj, mode: str)

Ez az osztály egy fileobj becsomagolására használható, amely bármilyen folyamszerű objektum lehet, például fájl, socket vagy folyam (beleértve az io.BytesIO-t is). Maga is egy folyam, és implementálja a szabványos read/readinto/write/close metódusokat.

Ha a mode argumentum értéke "rb", a GzipFile példányból való olvasások kicsomagolják a mögöttes folyamban lévő adatokat, és kicsomagolt adatokat adnak vissza.

Ha a tömörítési támogatás engedélyezve van, a mode argumentum beállítható "wb"-re, és a GzipFile példányba történő írások tömörítve kerülnek a mögöttes folyamba.

Alapértelmezetten a GzipFile osztály a gzip fájlformátum segítségével olvas és ír adatokat, beleértve a fejlécet és a láblécet ellenőrzőösszeggel, valamint egy 512 bájtos ablakméretet.

A file, compresslevel és mtime argumentumok nem támogatottak. A fileobj és a mode értéket mindig kulcsszavas argumentumként kell megadni.

Példák

A gzip.GzipFile tipikus felhasználási esete egy tömörített fájl olvasása vagy írása a tárolóból:

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)

A gzip-forrásokkal való munkáról és az ablakméret megválasztásáról a deflate dokumentáció végén található megjegyzés ad útmutatást.