gzip --- การบีบอัดและขยายไฟล์ gzip¶
โมดูลนี้อนุญาตให้บีบอัดและขยายข้อมูล binary ด้วย DEFLATE algorithm ที่ใช้โดยรูปแบบไฟล์ gzip โมดูลให้ตัวช่วย one-shot compress()/decompress() และ wrapper แบบ streaming GzipFile ที่ครอบไฟล์หรือออบเจ็กต์ stream ที่อยู่เบื้องหลัง
Note
ควรใช้ deflate.DeflateIO แทนฟังก์ชันในโมดูลนี้ เนื่องจากให้อินเตอร์เฟสแบบ streaming สำหรับการบีบอัดและขยาย ซึ่งสะดวกและมีประสิทธิภาพหน่วยความจำมากกว่าเมื่อทำงานกับการอ่านหรือเขียนข้อมูลที่บีบอัดไปยังไฟล์, socket หรือ stream
ความพร้อมใช้งาน:
โมดูลนี้ ไม่รวมอยู่ใน OpenMV Cam โดยค่าเริ่มต้น เนื่องจากมีฟังก์ชันซ้ำกับที่มีอยู่แล้วในโมดูล
deflateสามารถติดตั้งสำเนา (หรือ freeze ลงในเฟิร์มแวร์แบบกำหนดเอง) ได้จาก micropython-lib (source) ดู การจัดการแพ็กเกจ สำหรับข้อมูลเพิ่มเติม เอกสารนี้อธิบายโมดูลนั้น
การบีบอัดใช้งานได้เฉพาะเมื่อการบีบอัดพร้อมใช้งานในโมดูล
deflateที่ built-in -- กล่าวคือ ไม่ใช้กับ OpenMV Cams ที่ใช้ STM32 (ดูหมายเหตุความพร้อมใช้งานด้านบน)
ฟังก์ชัน¶
คลาส¶
- class gzip.GzipFile(*, fileobj, mode: str)¶
คลาสนี้สามารถใช้ครอบ fileobj ซึ่งเป็น stream-like object ใด ๆ เช่น ไฟล์, socket หรือ stream (รวมถึง
io.BytesIO) มันเองก็เป็น stream และใช้เมธอดมาตรฐาน read/readinto/write/closeเมื่ออาร์กิวเมนต์ mode เป็น
"rb"การอ่านจาก instance ของ GzipFile จะขยายข้อมูลใน stream ที่อยู่เบื้องหลังและคืนข้อมูลที่ขยายแล้วหากเปิดใช้งาน compression support อาร์กิวเมนต์ mode สามารถตั้งเป็น
"wb"และการเขียนไปยัง instance ของ GzipFile จะถูกบีบอัดและเขียนไปยัง stream ที่อยู่เบื้องหลังโดยค่าเริ่มต้น คลาส GzipFile จะอ่านและเขียนข้อมูลโดยใช้รูปแบบไฟล์ gzip รวมถึง header และ footer ที่มี checksum และขนาด window 512 ไบต์
อาร์กิวเมนต์ file, compresslevel และ mtime ไม่รองรับ fileobj และ mode ต้องระบุเป็น keyword arguments เสมอ
ตัวอย่าง¶
กรณีการใช้งานทั่วไปของ gzip.GzipFile คือการอ่านหรือเขียนไฟล์ที่บีบอัดจาก storage:
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 และการเลือกขนาด window ดูหมายเหตุที่ ท้ายเอกสาร deflate