วิธีอ่านไฟล์ไบนารีใน Python

How Read Binary Files Python



ไฟล์ที่มีข้อมูลไบนารีเรียกว่าไฟล์ไบนารี ข้อมูลไบนารีที่จัดรูปแบบหรือไม่จัดรูปแบบใด ๆ จะถูกเก็บไว้ในไฟล์ไบนารี และไฟล์นี้ไม่สามารถอ่านได้โดยมนุษย์และคอมพิวเตอร์จะใช้โดยตรง เมื่อไฟล์ไบนารีจำเป็นต้องอ่านหรือถ่ายโอนจากที่หนึ่งไปยังอีกที่หนึ่ง เนื้อหาของไฟล์จะถูกแปลงหรือเข้ารหัสให้อยู่ในรูปแบบที่มนุษย์อ่านได้ นามสกุลของไฟล์ไบนารีคือ .bin เนื้อหาของไฟล์ไบนารีสามารถอ่านได้โดยใช้ฟังก์ชันหรือโมดูลในตัว วิธีต่างๆ ในการอ่านไฟล์ไบนารีใน Python ได้แสดงให้เห็นในบทช่วยสอนนี้

ข้อกำหนดเบื้องต้น:

ก่อนตรวจสอบตัวอย่างของบทช่วยสอนนี้ ควรสร้างไฟล์ไบนารีอย่างน้อยหนึ่งไฟล์เพื่อใช้ในสคริปต์ตัวอย่าง สคริปต์ของไฟล์ python สองไฟล์ให้ไว้ด้านล่างเพื่อสร้างไฟล์ไบนารีสองไฟล์ binary1.py จะสร้างไฟล์ไบนารีชื่อ string.bin ที่จะมีข้อมูลสตริง และ binary2.py จะสร้างไฟล์ไบนารีชื่อ number_list.bin ซึ่งจะมีรายการข้อมูลที่เป็นตัวเลข







Binary1.py

# เปิดตัวจัดการไฟล์เพื่อสร้างไฟล์ไบนารี

file_handler= เปิด('สตริง.bin', 'wb')

# เพิ่มข้อความสองบรรทัดในไฟล์ไบนารี

ไฟล์_ตัวจัดการ.เขียน(NS'ยินดีต้อนรับสู่ LinuxHintNSเรียนรู้การเขียนโปรแกรม Python')

# ปิดตัวจัดการไฟล์

ไฟล์_ตัวจัดการ.ปิด()

Binary2.py

# เปิดตัวจัดการไฟล์เพื่อสร้างไฟล์ไบนารี

ไฟล์=เปิด('number_list.bin','wb')

#ประกาศรายการค่าตัวเลข

ตัวเลข=[10,30,สี่ห้า,60,70,85,99]

# แปลงรายการเป็นอาร์เรย์

barray=bytearray(ตัวเลข)

# เขียนอาร์เรย์ลงในไฟล์

ไฟล์.เขียน(barray)

ไฟล์.ปิด()

ตัวอย่างที่ 1: อ่านไฟล์ไบนารีของข้อมูลสตริงลงในอาร์เรย์ไบต์

มีหลายวิธีใน Python เพื่ออ่านไฟล์ไบนารี คุณสามารถอ่านจำนวนไบต์หรือเนื้อหาทั้งหมดของไฟล์ไบนารีในแต่ละครั้ง สร้างไฟล์ python ด้วยสคริปต์ต่อไปนี้ NS ฟังก์ชัน open() ได้เคยเปิด string.bin สำหรับการอ่าน NS อ่าน() ฟังก์ชั่น ถูกใช้เพื่ออ่านอักขระ 7 ตัวจากไฟล์ในการวนซ้ำแต่ละครั้งของ while loop และ print ต่อไป อ่าน() ฟังก์ชั่น ถูกใช้โดยไม่มีข้อโต้แย้งใดๆ เพื่ออ่านเนื้อหาทั้งหมดของไฟล์ไบนารีที่จะพิมพ์ในภายหลัง



# เปิดไฟล์ไบนารีเพื่ออ่าน

file_handler= เปิด('สตริง.bin', 'อาร์บี')

# อ่านสามไบต์แรกจากไฟล์ไบนารี

data_byte=ไฟล์_ตัวจัดการ.อ่าน(7)

พิมพ์('พิมพ์อักขระสามตัวในการทำซ้ำแต่ละครั้ง:')

# วนซ้ำเพื่ออ่านส่วนที่เหลือของไฟล์

ในขณะที่ข้อมูล_ไบต์:

พิมพ์(data_byte)

data_byte=ไฟล์_ตัวจัดการ.อ่าน(7)


# อ่านไฟล์ทั้งหมดเป็นสตริงไบต์เดียว

กับ เปิด('สตริง.bin', 'อาร์บี') เช่นฉ:

เนื้อหา=ฉ.อ่าน()

พิมพ์('พิมพ์เนื้อหาทั้งหมดของไฟล์ไบนารี:')

พิมพ์(เนื้อหา)

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ข้างต้น







ตัวอย่างที่ 2: อ่านไฟล์ไบนารีของข้อมูลสตริงลงในอาร์เรย์

สร้างไฟล์ python ด้วยสคริปต์ต่อไปนี้เพื่ออ่านไฟล์ไบนารีชื่อ number_list.bin สร้างไว้ก่อนหน้านี้ ไฟล์ไบนารีนี้มีรายการข้อมูลตัวเลข เช่นเดียวกับตัวอย่างก่อนหน้านี้ the ฟังก์ชัน open() ได้ใช้เปิดไฟล์ไบนารีเพื่ออ่านในสคริปต์ ถัดไป ตัวเลข 5 ตัวแรกจะถูกอ่านจากไฟล์ไบนารีและแปลงเป็นรายการก่อนพิมพ์

# เปิดไฟล์ไบนารีเพื่ออ่าน

ไฟล์ = เปิด('number_list.bin', 'อาร์บี')

#อ่านเลขห้าตัวแรกในรายการ

ตัวเลข= รายการ(ไฟล์.อ่าน(5))

#พิมพ์รายชื่อ

พิมพ์(ตัวเลข)

#ปิดไฟล์

ไฟล์.ปิด()

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ข้างต้น ไฟล์ไบนารีประกอบด้วยตัวเลข 7 ตัว และตัวเลขห้าตัวแรกที่พิมพ์ออกมาในเอาต์พุต



ตัวอย่างที่ 3: อ่านไฟล์ไบนารีโดยใช้ NumPy

วิธีสร้างไฟล์ไบนารีโดยใช้ อาร์เรย์ NumPy และอ่านเนื้อหาของไฟล์ไบนารีโดยใช้ลงในรายการโดยใช้ โมดูล NumPy ได้แสดงให้เห็นในส่วนนี้ของบทช่วยสอน ก่อนตรวจสอบสคริปต์ด้านล่าง คุณต้องติดตั้ง โมดูล NumPy โดยดำเนินการคำสั่งจากเทอร์มินัลหรือติดตั้ง แพ็คเกจ NumPy ในตัวแก้ไข Python ที่ซึ่งสคริปต์จะถูกดำเนินการ NS tofile() ฟังก์ชั่น ใช้ในการสร้างข้อความหรือไฟล์ไบนารีและ fromfile() ฟังก์ชั่น ใช้ในการสร้างอาร์เรย์โดยการอ่านข้อความหรือไฟล์ไบนารี

ไวยากรณ์ของ tofile():

นร.tofile(ไฟล์,ก.ย='',รูปแบบ='%NS')

อาร์กิวเมนต์แรกบังคับและใช้ชื่อไฟล์หรือสตริงหรือเส้นทางเป็นค่า ไฟล์จะถูกสร้างขึ้นหากมีการระบุชื่อไฟล์ในอาร์กิวเมนต์นี้ อาร์กิวเมนต์ที่สองเป็นทางเลือกที่ใช้ในการแยกองค์ประกอบอาร์เรย์ อาร์กิวเมนต์ที่สามเป็นทางเลือกและใช้สำหรับการจัดรูปแบบเอาต์พุตของไฟล์ข้อความ

ไวยากรณ์ของ fomfile():

งี่เง่าจากไฟล์(ไฟล์,dtype=ลอย,นับ=-1,ก.ย='',offset=0,*,ชอบ=ไม่มี)

อาร์กิวเมนต์แรกบังคับและใช้ชื่อไฟล์หรือสตริงหรือเส้นทางเป็นค่า เนื้อหาของไฟล์จะถูกอ่านหากมีการระบุชื่อไฟล์ในอาร์กิวเมนต์นี้ NS dtype กำหนดชนิดข้อมูลของอาร์เรย์ที่ส่งคืน การนับใช้เพื่อนับจำนวนรายการ วัตถุประสงค์ของ ก.ย คือการแยกข้อความหรือรายการอาร์เรย์ ออฟเซ็ตใช้เพื่อกำหนดตำแหน่งปัจจุบันของไฟล์ อาร์กิวเมนต์สุดท้ายใช้เพื่อสร้างอ็อบเจ็กต์อาร์เรย์ที่ไม่ใช่a อาร์เรย์ NumPy .

สร้างไฟล์ python ด้วยสคริปต์ต่อไปนี้เพื่อสร้างไฟล์ไบนารีโดยใช้ อาร์เรย์ NumPy และอ่านและพิมพ์เนื้อหาของไฟล์ไบนารี

# นำเข้าโมดูล NumPy

นำเข้างี่เง่าเช่นเช่น

#ประกาศ numpy array

nparray=เช่น.อาร์เรย์([3. 4, 89, 30, สี่ห้า, 90, สิบเอ็ด])

# สร้างไฟล์ไบนารีจากอาร์เรย์จำนวนมาก

น.tofile('list.bin')

# พิมพ์ข้อมูลจากไฟล์ไบนารี

พิมพ์(เช่น.จากไฟล์('list.bin',dtype=เช่น.int64))

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ข้างต้น

บทสรุป:

สามวิธีในการอ่านไฟล์ไบนารีได้แสดงให้เห็นในบทช่วยสอนนี้โดยใช้ตัวอย่างง่ายๆ ตัวอย่างแรกส่งคืนเนื้อหาของไฟล์ไบนารีเป็นอาร์เรย์ไบต์ ตัวอย่างที่สองส่งคืนเนื้อหาของไฟล์ไบนารีเป็นรายการ ตัวอย่างสุดท้ายยังส่งคืนเนื้อหาของไฟล์ไบนารีเป็นรายการ