โมดูล zlib ให้การใช้งานไลบรารีบีบอัด Zlib ของ Python (https://www.zlib.net) ซึ่งเป็นส่วนหนึ่งของโครงการ GNU
บทความนี้กล่าวถึงฟังก์ชันสำคัญที่กำหนดไว้ในโมดูล zlib
บีบอัด()
ฟังก์ชันนี้เป็นอินเทอร์เฟซหลักของโมดูลนี้พร้อมกับฟังก์ชันคลายการบีบอัด () ฟังก์ชันนี้ส่งคืนอ็อบเจ็กต์ไบต์โดยบีบอัดข้อมูลที่กำหนดให้เป็นพารามิเตอร์ ฟังก์ชันนี้มีพารามิเตอร์อื่นที่เรียกว่าระดับ ซึ่งควบคุมขอบเขตของการบีบอัด เป็นจำนวนเต็มระหว่าง 0 ถึง 9 ค่าต่ำสุด 0 หมายถึงไม่มีการบีบอัดและ 9 หมายถึงการบีบอัดที่ดีที่สุด ยิ่งระดับการบีบอัดสูงขึ้น ความยาวของอ็อบเจ็กต์ไบต์ที่บีบอัดก็ยิ่งมากขึ้น
แตกไฟล์()
ฟังก์ชันนี้ทำงานตรงข้ามกับฟังก์ชันการบีบอัด () มันดึงข้อมูลที่ไม่มีการบีบอัด ฟังก์ชันนี้สามารถมีพารามิเตอร์ทางเลือกที่เรียกว่า wbits ซึ่งควบคุมขนาดของบัฟเฟอร์ประวัติและลักษณะของรูปแบบส่วนหัวและส่วนท้าย
คำสั่งต่อไปนี้บีบอัดวัตถุสตริงโดยใช้ฟังก์ชันการบีบอัด ()
>>> import zlib >>> c = zlib.compress(b'hello python') >>> c b'x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7'
ในขณะที่ฟังก์ชัน decompress() ดึงสตริง Python ดั้งเดิมกลับมา
>>> zlib.decompress(c) b'hello python'
โมดูลประกอบด้วยคำจำกัดความของมีสองคลาสที่สอดคล้องกันของอ็อบเจ็กต์การบีบอัดและแตกไฟล์
compressobj() − ตัวสร้างนี้ส่งคืนอ็อบเจ็กต์การบีบอัดเพื่อใช้ในการบีบอัดสตรีมข้อมูล สองวิธีที่สำคัญของวัตถุนี้คือ
บีบอัด() − ส่งคืนอ็อบเจ็กต์ไบต์ที่บีบอัด
ล้าง() − เนื่องจากอ็อบเจ็กต์การบีบอัดเกี่ยวข้องกับสตรีม ข้อมูลที่บีบอัดบางส่วนอาจยังคงอยู่ในบัฟเฟอร์ วิธีนี้จะล้างบัฟเฟอร์
ตัวอย่างต่อไปนี้ตั้งค่าออบเจ็กต์การบีบอัดและสร้างออบเจ็กต์ข้อมูลบีบอัดโดยการเพิ่มข้อมูลที่ฟลัชไปยังค่าส่งคืนของวิธีการบีบอัด ()
>>> s1 = b'hello python' >>> c = zlib.compressobj() >>> s2 = c.compress(s1) >>> s2 = s2+c.flush() >>> s2 b'x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7'
คลายการบีบอัด() − สิ่งนี้ทำหน้าที่เป็นตัวสร้างสำหรับออบเจกต์การคลายการบีบอัดซึ่งขยายข้อมูลขนาดใหญ่จากสตรีม วัตถุนี้เพื่อให้วิธีการดังต่อไปนี้
คลายการบีบอัด() - เมธอดนี้ส่งคืนข้อมูลที่ไม่บีบอัด
ล้าง() − วิธีนี้จะล้างบัฟเฟอร์
รหัสต่อไปนี้ดึงข้อมูลที่ไม่บีบอัดจากวัตถุไบต์ที่สร้างขึ้นในตัวอย่างก่อนหน้า
>>> d = zlib.decompressobj() >>> x = d.decompress(s2) >>> x = x+d.flush() >>> x b'hello python'
ค่าคงที่สองค่าถูกกำหนดในโมดูล zlib ซึ่งให้ข้อมูลเวอร์ชันของไลบรารี zlib ที่ใช้งานอยู่
>>> zlib.ZLIB_VERSION '1.2.11' >>> zlib.ZLIB_RUNTIME_VERSION '1.2.11'