gzip — דחיסה ופריסה של gzip

מודול זה מאפשר דחיסה ופריסה של נתונים בינאריים באמצעות אלגוריתם DEFLATE המשמש את פורמט קובץ ה-gzip. הוא מספק פונקציות עזר חד-פעמיות compress()/decompress() ועטיפה זורמת GzipFile סביב אובייקט קובץ או זרם בסיסי.

הערה

העדיפו להשתמש ב-deflate.DeflateIO במקום בפונקציות שבמודול זה, מכיוון שהוא מספק ממשק זורם לדחיסה ולפריסה הנוח וחסכוני יותר בזיכרון בעבודה עם קריאה או כתיבה של נתונים דחוסים לקובץ, socket או זרם.

זמינות:

  • מודול זה אינו כלול ב-OpenMV Cam כברירת מחדל, מכיוון שהוא משכפל פונקציונליות שכבר מסופקת על ידי מודול deflate.

  • ניתן להתקין עותק (או להקפיא אותו בקושחה מותאמת אישית) מ-micropython-lib (מקור). ראו ניהול חבילות למידע נוסף. תיעוד זה מתאר מודול זה.

  • דחיסה זמינה רק אם דחיסה זמינה במודול המובנה deflate – כלומר, לא ב-OpenMV Cams מבוססי STM32 (ראו את הערת הזמינות שלו לעיל).

פונקציות

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

עטיפה סביב open() המובנה המחזירה מופע GzipFile.

gzip.decompress(data: bytes, /) bytes

פורס את data לאובייקט bytes.

gzip.compress(data: bytes, /) bytes

דוחס את data לאובייקט bytes.

מחלקות

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

מחלקה זו יכולה לשמש לעטיפת fileobj שהוא כל אובייקט דמוי-זרם כגון קובץ, socket או זרם (כולל io.BytesIO). הוא עצמו זרם ומממש את המתודות הסטנדרטיות read/readinto/write/close.

כאשר ארגומנט mode הוא "rb", קריאות ממופע ה-GzipFile יפרסו את הנתונים בזרם הבסיסי ויחזירו נתונים פרוסים.

אם תמיכת דחיסה מופעלת, ארגומנט mode יכול להיות מוגדר ל-"wb", וכתיבות למופע ה-GzipFile יידחסו וייכתבו לזרם הבסיסי.

כברירת מחדל מחלקת ה-GzipFile תקרא ותכתוב נתונים באמצעות פורמט קובץ ה-gzip, כולל כותרת ותחתית עם checksum וגודל חלון של 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.