แอปพลิเคชั่น GZip ใช้สำหรับบีบอัดและคลายไฟล์ เป็นส่วนหนึ่งของโครงการ GNU โมดูล gzip ของ Python เป็นอินเทอร์เฟซสำหรับแอปพลิเคชัน GZip อัลกอริทึมการบีบอัดข้อมูล gzip นั้นใช้โมดูล zlib
โมดูล gzip มีคำจำกัดความของคลาส GzipFile พร้อมกับวิธีการ นอกจากนี้ยังรองรับฟังก์ชั่น open(), compress() และ decompress()
วิธีที่ง่ายที่สุดในการบีบอัดและคลายการบีบอัดคือการใช้ฟังก์ชันที่กล่าวถึงข้างต้น
เปิด()
ฟังก์ชันนี้เปิดไฟล์ที่บีบอัดด้วย gzip ในโหมดไบนารีหรือโหมดข้อความ และส่งคืนไฟล์ เช่น อ็อบเจ็กต์ ซึ่งอาจเป็นไฟล์จริง สตริง หรืออ็อบเจ็กต์ไบต์ โดยค่าเริ่มต้น ไฟล์จะถูกเปิดในโหมด 'rb' เช่น การอ่านข้อมูลไบนารี อย่างไรก็ตาม พารามิเตอร์โหมดของฟังก์ชันนี้สามารถใช้โหมดอื่นๆ ตามรายการด้านล่าง
binary mode: 'r', 'rb', 'a', 'ab', 'w', 'wb', 'x', 'xb' text mode : 'rt', 'at', 'wt', or 'xt'
ฟังก์ชันนี้ยังกำหนดระดับการบีบอัดที่มีค่าที่ยอมรับได้ระหว่าง 0 ถึง 9 เมื่อไฟล์ถูกเปิดในโหมดข้อความ วัตถุ GzipFile จะถูกรวมไว้ในวัตถุ TextIOWrapper
บีบอัด()
ฟังก์ชันนี้ใช้การบีบอัดข้อมูลที่กำหนดให้เป็นอาร์กิวเมนต์และส่งคืนอ็อบเจ็กต์ไบต์ที่บีบอัด โดยค่าเริ่มต้นระดับการบีบอัดคือ 9
แตกไฟล์()
ฟังก์ชันนี้จะขยายขนาดอ็อบเจ็กต์ไบต์และส่งกลับข้อมูลที่ไม่บีบอัด
ตัวอย่างต่อไปนี้จะสร้างไฟล์ gzip โดยการเขียนข้อมูลที่บีบอัดไว้
>>> import gzip >>> data = b'Python - Batteries included' >>> with gzip.open("test.txt.gz", "wb") as f: f.write(data)
ซึ่งจะสร้างไฟล์ “test.txt.gz” ในไดเร็กทอรีปัจจุบัน ไฟล์เก็บถาวร gzip นี้มี “test.txt” ซึ่งคุณตรวจสอบได้โดยใช้ยูทิลิตี้การแตกไฟล์
หากต้องการอ่านไฟล์บีบอัดนี้โดยทางโปรแกรม
>>> with gzip.open("test.txt.gz", "rb") as f: data = f.read() >>> data b'Python - Batteries included'
หากต้องการบีบอัดไฟล์ที่มีอยู่เป็นไฟล์เก็บถาวร gzip ให้อ่านข้อความในไฟล์และแปลงเป็นไฟล์ไบต์อาร์เรย์ ออบเจ็กต์ bytearray นี้ถูกเขียนลงในไฟล์ gzip ในตัวอย่างด้านล่าง ไฟล์ 'zen.txt' จะถือว่ามีอยู่ในไดเร็กทอรีปัจจุบัน
fp = open("zen.txt","rb") >>> data = fp.read() >>> bindata = bytearray(data) >>> with gzip.open("zen.txt.gz", "wb") as f: f.write(bindata)
วิธีดึงไฟล์ที่ไม่บีบอัดจากไฟล์เก็บถาวร gzip
>>> fp = open("zen1.txt", "wb") >>> with gzip.open("zen.txt.gz", "rb") as f: bindata = f.read() >>> fp.write(bindata) >>> fp.close()
โค้ดด้านบนจะสร้าง 'zen1.txt' ในไดเร็กทอรีปัจจุบันซึ่งมีข้อมูลเหมือนกับใน 'zen.txt'
นอกเหนือจากฟังก์ชันอำนวยความสะดวกเหล่านี้แล้ว โมดูล gzip ยังมีคลาส GzipFile ซึ่งกำหนดวิธีการบีบอัด () และคลายการบีบอัด () คอนสตรัคเตอร์ของคลาสนี้รับไฟล์ โหมด และอาร์กิวเมนต์ระดับการบีบอัดโดยมีความหมายเดียวกับด้านบน
เมื่อพารามิเตอร์โหมดถูกกำหนดเป็น 'w' หรือ 'wb' หรือ 'wt' ออบเจ็กต์ GipFile จะจัดเตรียมวิธีเขียน () เพื่อบีบอัดข้อมูลที่กำหนดและเขียนไปยังไฟล์ gzip
>>> f = gzip.GzipFile("testnew.txt.gz","wb") >>> data = b'Python - Batteries included' >>> f.write(data) >>> f.close()
นี้จะสร้างไฟล์ testnew.txt.gz คุณสามารถเปิดเครื่องรูดโดยใช้ยูทิลิตี้ใดก็ได้เพื่อดูว่ามี testnew.txt ที่มีข้อความ "Python – แบตเตอรี่รวมอยู่ด้วย"
หากต้องการคลายการบีบอัดไฟล์ gzip โดยใช้วัตถุ GzipFile ให้สร้างด้วยค่า 'rb' เป็นพารามิเตอร์โหมดและอ่านข้อมูลที่ไม่บีบอัดด้วยวิธี read()
>>> f = gzip.GzipFile("testnew.txt.gz","rb") >>> data = f.read() >>> data b'Python - Batteries included'
ในบทความนี้ เราได้เรียนรู้วิธีใช้งานไลบรารี gzip โดยโมดูล gzip ของ Python