gzip — דחיסה ופריסה של gzip¶
מודול זה מאפשר דחיסה ופריסה של נתונים בינאריים באמצעות אלגוריתם DEFLATE המשמש את פורמט קובץ ה-gzip. הוא מספק פונקציות עזר חד-פעמיות compress()/decompress() ועטיפה זורמת GzipFile סביב אובייקט קובץ או זרם בסיסי.
הערה
העדיפו להשתמש ב-deflate.DeflateIO במקום בפונקציות שבמודול זה, מכיוון שהוא מספק ממשק זורם לדחיסה ולפריסה הנוח וחסכוני יותר בזיכרון בעבודה עם קריאה או כתיבה של נתונים דחוסים לקובץ, socket או זרם.
זמינות:
מודול זה אינו כלול ב-OpenMV Cam כברירת מחדל, מכיוון שהוא משכפל פונקציונליות שכבר מסופקת על ידי מודול
deflate.ניתן להתקין עותק (או להקפיא אותו בקושחה מותאמת אישית) מ-micropython-lib (מקור). ראו ניהול חבילות למידע נוסף. תיעוד זה מתאר מודול זה.
דחיסה זמינה רק אם דחיסה זמינה במודול המובנה
deflate– כלומר, לא ב-OpenMV Cams מבוססי STM32 (ראו את הערת הזמינות שלו לעיל).
פונקציות¶
מחלקות¶
- 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.