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

Python รองรับการบีบอัด bzip2 (bz2)


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'