12 ธันวาคม 2558

Published 12/12/2558 by with 0 comment

อ่าน-เขียนข้อมูลไบนารีไฟล์ในภาษาไพทอน

บทความนี้ผมจะพาผู้อ่านไปอ่านและเขียนข้อมูลไบนารีไฟล์ในภาษาไพทอนกันครับ

ไบนารีไฟล์ (binary files) เป็นไฟล์ข้อมูลในรูปแบบเฉพาะของคอมพิวเตอร์ โดยข้อมูลที่เก็บอาจเป็นเลขจำนวนเต็ม ตัวอักษร และอื่น ๆ เป็นต้น

ในภาษาไพทอน มีหลักไวยากรณ์ในการอ่านและเขียนข้อมูลไบนารีไฟล์ในภาษาไพทอนดังนี้

การเปิดไฟล์ไบนารีในภาษาไพทอน



[python]open(ชื่อไฟล์,โหมดการเปิดไฟล์[/python]

โหมดการเปิดไฟล์มีดังนี้

  • wb เขียนไบนารีไฟล์หรือสร้างไบนารีไฟล์ใหม่ในกรณีที่ไม่มีไฟล์ที่เรียก

  • rb อ่านไบนารีไฟล์

  • ab เขียนข้อมูลต่อท้ายข้อมูลที่มีอยู่ในไฟล์

  • wb+ เขียนไบนารีไฟล์หรือสร้างไบนารีไฟล์ใหม่ในกรณีที่ไม่มีไฟล์ที่เรียก

  • rb+ อ่านไบนารีไฟล์ ถ้าไม่มีไฟล์ให้สร้างไฟล์ใหม่

  • ab+ เขียนข้อมูลต่อท้ายข้อมูลที่มีอยู่ในไฟล์ ถ้าไม่มีไฟล์ให้สร้างไฟล์ใหม่


การปิดไฟล์


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

[python]file.close()[/python]

ข้อควรรู้
ชนิดข้อมูล Byte string ในภาษาไพทอน จะขึ้นต้นด้วย b"ข้อมูล"
อ่านเพิ่มเติมได้จากบทความ Byte Array ในภาษาไพทอน Python 3

เขียนข้อมูลลงไฟล์


ทบทวนความรู้พื้นฐานเรื่องจำนวนไบต์และบิต MB GB
8 Bit (บิต) = 1 Byte (ไบต์)
1 Byte (ไบต์) = 1 ตัวอักษร
1 KB (กิโลไบต์) = 1024 Byte
1 MB (เมกกะไบต์) = 1024 KB
1 GB (กิกะไบต์) = 1024 MB

การเขียนข้อมูลลงไบนารีไฟล์ในภาษาไพทอน ใช้คำสั่งต่อไปนี้

[python]
file.write(ข้อมูลไบต์)[/python]

ตัวอย่างการเขียนข้อมูลลงไฟล์

[python]
ofile = open("a", 'wb') # wb เขียนไฟล์
ofile.write(b"ok")
ofile.close()
[/python]

เขียนข้อมูลต่อจากไฟล์เดิม
ใช้โหมดเปิดไฟล์ ab
ตัวอย่าง

[python]
ofile = open("a", 'ab') # ab เขียนข้อมูลต่อจากไฟล์เดิม
ofile.write(b"Hi")
ofile.close()
[/python]

อ่านไฟล์


ใช้คำสั่ง

[python]file.read(ขนาดข้อมูลไบต์ที่อ่าน)[/python]

ตัวอย่างการอ่านไฟล์

[python]
ofile = open("a", 'rb') # rb อ่านไฟล์
print(ofile.read(2)) # อ่านข้อมูล 2 ไบต์
print(ofile.read(2)) # อ่านข้อมูลอีก 2 ไบต์
ofile.close()
[/python]

ผลลัพธ์

[python]b'ok'
b'Hi'[/python]

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)