bzip2 เป็นอัลกอริธึมโอเพ่นซอร์สสำหรับการบีบอัดและคลายการบีบอัดไฟล์ โมดูล bz2 ของ Python มีฟังก์ชันการใช้งานอัลกอริทึม bzip2 โดยทางโปรแกรม
ฟังก์ชัน open() เป็นอินเทอร์เฟซหลักของโมดูลนี้
เปิด()
ฟังก์ชันนี้เปิดไฟล์บีบอัด bzip2 และส่งคืนวัตถุไฟล์ ไฟล์สามารถเปิดเป็นโหมดไบนารี/ข้อความโดยมีสิทธิ์อ่าน/เขียน ฟังก์ชันทำการบีบอัดตามอาร์กิวเมนต์ระดับการบีบอัดระหว่าง 1 ถึง 9
เขียน()
เมื่อไฟล์ถูกเปิดในโหมด 'w' หรือ 'wb' ฟังก์ชันนี้จะพร้อมใช้งานสำหรับออบเจกต์ไฟล์ ในโหมดไบนารี จะเขียนข้อมูลไบนารีที่บีบอัดลงในไฟล์ ในโหมดข้อความปกติ ออบเจ็กต์ไฟล์จะถูกรวมไว้ในอ็อบเจ็กต์ TetIOWrapper เพื่อดำเนินการเข้ารหัส
อ่าน() − เมื่อเปิดในโหมดอ่าน ฟังก์ชันนี้จะอ่านและส่งคืนข้อมูลที่ไม่บีบอัด
โค้ดต่อไปนี้เขียนข้อมูลที่บีบอัดลงในไฟล์ bzip2
>>> f = bz2.open("test.bz2", "wb") >>> data = b'Welcome to TutorialsPoint' >>> f.write(data) >>> f.close()
สิ่งนี้จะสร้างไฟล์ test.bz2 ในไดเร็กทอรีปัจจุบัน เครื่องมือคลายซิปจะแสดงไฟล์ 'ทดสอบ' ในนั้น หากต้องการอ่านข้อมูลที่ไม่บีบอัดจากไฟล์ test.bz2 นี้ ให้ใช้รหัสต่อไปนี้
>>> f = bz2.open("test.bz2", "rb") >>> data=f.read() >>> data b'Welcome to TutorialsPoint'
โมดูล bz2 ยังกำหนดคลาส BZ2File วัตถุทำหน้าที่เป็นคอมเพรสเซอร์และตัวขยายขนาดขึ้นอยู่กับพารามิเตอร์โหมดของตัวสร้าง
BZ2File()
นี่คือตัวสร้าง เช่นเดียวกับในฟังก์ชัน open() จำเป็นต้องมีพารามิเตอร์ของไฟล์และโหมด ระดับการบีบอัดโดยค่าเริ่มต้นคือ 9 และสามารถอยู่ระหว่าง 1 ถึง 9
BZ2Compressor()
ฟังก์ชันนี้ส่งคืนอ็อบเจ็กต์ของคลาสคอมเพรสเซอร์แบบเพิ่มหน่วย การเรียกใช้เมธอดการบีบอัด () แต่ละครั้งในคลาสนี้จะส่งกลับกลุ่มของข้อมูลที่บีบอัด สามารถเชื่อมต่อหลาย ๆ ชิ้นเข้าด้วยกันและสุดท้ายเขียนลงในไฟล์บีบอัด bzip2
ฟลัช()
เมธอดนี้จะล้างบัฟเฟอร์และส่งคืนกลุ่มข้อมูลในนั้นเพื่อผนวกเข้ากับออบเจ็กต์ที่บีบอัด
BZ2Decompressor()
ฟังก์ชันนี้ส่งคืนอ็อบเจ็กต์ของตัวขยายขนาดที่เพิ่มขึ้น จุดเล็ก ๆ ของข้อมูลที่คลายการบีบอัดที่ต่อกันพร้อมกับข้อมูลที่ไหลออกทำให้เกิดข้อมูลที่ไม่บีบอัด
ตัวอย่างต่อไปนี้จะบีบอัดแต่ละ iem ในอ็อบเจ็กต์รายการก่อน และเขียนอ็อบเจ็กต์ไบต์ที่ต่อกันลงในไฟล์ ข้อมูลถูกดึงโดยวัตถุ BZ2Decompressor
>>> data = [b'Hello World', b'How are you?', b'welcome to Python'] >>> obj = bz2.BZ2Compressor() >>> f = bz2.open("test.bz2", "wb") >>> d1 = obj.compress(data[0]) >>> d2 = obj.compress(data[1]) >>> d3 = obj.compress(data[2]) >>> d4 = obj.flush() >>> d1,d2,d3,d4 (b'', b'', b'', b'BZh91AY&SYS\x9a~\x99\x00\x00\x03\x1f\x80@\x00\x00\x00\x80@@\x80.G\x96\xa0 \x00!\xa8\xd0\x06\x9a6\x90\xa6LL\x83#\x18\x1d\x83\xee^]\x1e|\xa9\xddgu\x15G/\x1a\x8c\xd1\x90\x14\x8f\x8b\xb9"\x9c(H)\xcd?L\x80') >>> compressedobj=d1+d2+d3+d4 >>> f.write(compressedobj) >>> f.close() >>> obj=bz2.BZ2DeCompressor() >>> f=bz2.open("test.bz2", "rb") >>> data=f.read() >>> obj.decompress(data) b'Hello WorldHow are you?welcome to Python'