Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python รองรับไฟล์ gzip (gzip)


แอปพลิเคชั่น 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