gzip --- nén & giải nén gzip¶
Mô-đun này cho phép nén và giải nén dữ liệu nhị phân bằng thuật toán DEFLATE được dùng trong định dạng file gzip. Nó cung cấp các hàm trợ giúp một lần compress()/decompress() và một lớp bọc phát trực tuyến GzipFile quanh đối tượng file hoặc stream bên dưới.
Ghi chú
Hãy ưu tiên dùng deflate.DeflateIO thay vì các hàm trong mô-đun này vì nó cung cấp giao diện phát trực tuyến cho nén và giải nén, thuận tiện và hiệu quả bộ nhớ hơn khi đọc hoặc ghi dữ liệu nén vào file, socket hoặc stream.
Khả năng sử dụng:
Mô-đun này không được tích hợp sẵn trên OpenMV Cam theo mặc định, vì nó trùng lặp chức năng đã được cung cấp bởi mô-đun
deflate.Có thể cài đặt một bản sao (hoặc tích hợp vào firmware tùy chỉnh) từ micropython-lib (nguồn). Xem Quản lý gói để biết thêm thông tin. Tài liệu này mô tả mô-đun đó.
Nén chỉ khả dụng nếu tính năng nén có trong mô-đun
deflatetích hợp -- tức là không dùng được trên các OpenMV Cam dựa trên STM32 (xem ghi chú về tính khả dụng ở trên).
Hàm¶
Lớp¶
- class gzip.GzipFile(*, fileobj, mode: str)¶
Lớp này có thể được dùng để bọc một fileobj là bất kỳ đối tượng stream-like nào như file, socket hoặc stream (kể cả
io.BytesIO). Bản thân nó là một stream và triển khai các phương thức read/readinto/write/close chuẩn.Khi đối số mode là
"rb", các lần đọc từ thực thể GzipFile sẽ giải nén dữ liệu trong stream bên dưới và trả về dữ liệu đã giải nén.Nếu hỗ trợ nén được bật thì đối số mode có thể được đặt thành
"wb", và các lần ghi vào thực thể GzipFile sẽ được nén và ghi vào stream bên dưới.Theo mặc định, lớp GzipFile sẽ đọc và ghi dữ liệu theo định dạng file gzip, bao gồm header và footer với checksum và kích thước cửa sổ 512 byte.
Các đối số file, compresslevel và mtime không được hỗ trợ. fileobj và mode phải luôn được chỉ định là đối số từ khóa.
Ví dụ¶
Trường hợp sử dụng điển hình cho gzip.GzipFile là đọc hoặc ghi file nén từ bộ nhớ:
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)
Để hướng dẫn làm việc với nguồn gzip và chọn kích thước cửa sổ, xem ghi chú tại cuối tài liệu deflate.