การจัดการกับไฟล์

(File I/O)

ในบทนี้ผู้อ่านจะได้เรียนรู้วิธีการจัดการกับไฟล์หรือแฟ้มข้อมูล (Fle) ซึ่งเป็นเรื่องที่มีความสำคัญมากอีกบทหนึ่งที่ผู้อ่านควรทำความเข้าใจ โดยส่วนใหญ่แล้วเรามักจะมีการจัดเก็บข้อมูลไว้ในหน่วยความจำหรือสื่อบันทึกข้อมูลภายนอก (Secondary Memory หรือ Storage Device) เช่น Hard Disk Drive (HIDD),Solid-State Drive (SSD), CD, DVD, Flash dive เป็นต้น เพื่อป้องกันการสูญหายเมื่อปิดเครื่อง โดยจัดเก็บในรูปแบบของไฟล์ (File) ผู้อ่านจะได้เรียนรู้ตั้งแต่ขั้นตอนการนำไฟล์มาประมวลผล ไปจนถึงการบันทึกข้อมูลลงไปในไฟล์เดิมหรือการสร้างไฟล์ใหม่ รวมถึงการจัดการกับไดเรกทอรี (Directory) หรือโฟลเดอร์ (Folder)ซึ่งภาษาไพธอนได้จัดเตรียมเมธอดต่างๆ จำนวนมากไว้ให้ใช้งาน

โหมดของไฟล์ (File mode)

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

  • โหมดไฟล์ข้อความ (Text File Mode)

  • โหมดไฟล์ไบนารี (Binary File Mode)

โหมดไฟล์ข้อความ (Text File Mode)

การอ่านและเขียนด้วยโหมดไฟล์ข้อความเป็นการทำงานระหว่างโปรแกรมกับไฟล์ข้อความ (.txt) ที่มีการใช้รหัส Unicode (Unicode encoding และ Unicode decoding) ถ้าเป็นการเขียนไฟล์จะมีสัญลักษณ์ขึ้นบรรทัดใหม่ \n บนระบบ Unix หรือ \r\n บนระบบ Windows และ \r บนระบบ MลCOS ที่ตำแหน่งท้ายบรรทัด หากเป็นการอ่านไฟล์จะแสดงเฉพาะสัญลักษณ์ \n ที่ด้านท้ายไฟล์ การเขียนคำสั่งโปรแกรมจัดการกับโหมดไฟล์ข้อความต้องใช้ตัวอักษรและสัญลักษณ์ ต่อไปนี้

ตารางที่ 1 ตัวอักษรสัญลักษณ์ใช้จัดการกับไฟล์ข้อความ (Text File)

โหมดไฟล์ไบนารี (Binary File Mode)

การจัดการกับข้อมูลด้วยโหมดไฟล์ใบนารีจะอยู่ในระดับบิต คือ 0 กับ 1 หรือเลขฐานสองนั่นเอง และเป็นโหมดที่ไม่มีการเปลี่ยนแปลงข้อมูลก่อนเขียนลงไฟล์ เมื่อเราต้องการเขียนคำสั่งโปรแกรมจัดการกับโหมดไฟล์ไบนารีต้องกำกับด้วยตัวอักษรสัญลักษณ์ ต่อไปนี้

ตารางที่ 2 ตัวอักษรสัญลักษณ์ที่ใช้จัดการกับไฟล์ไบนารี (Binary File)

เมธอดสำหรับจัดการกับไฟล์

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

ตารางที่ 3 เมธอดสำหรับจัดการกับไฟล์

ต้องการเปิดฟล์ขึ้นมาอ่านหรือเขียนข้อมูลลงไฟล์ใหม่ หรือการสร้างไฟล์ใหม่ตามโหมดต่างๆ ข้างต้น รวมทั้งการนำเอาเมธอดหรือฟังก์ชันมาร่วมใช้งาน ให้ใช้เมธอด open() เพื่อขอเชื่อมต่อกับไฟล์ที่ต้องการเปิดขึ้นมาใช้งานก่อน ซึ่งมีรูปแบบการเขียนคำสั่งดังนี้

file_object = open("file_name", mode="r", buffering=-1)

file_object ตัวแปรที่ใช้เก็บค่าข้อมูลไฟล์ เป็นการสร้างออบเจ็คไฟล์ขึ้นมา

open เมธอดที่ใช้สำหรับขอเชื่อมต่อเพื่อเปิดใช้งานไฟล์

file_name การระบุตำแหน่งและชื่อไฟล์ที่ต้องการเปิด เช่น C: Windows\ชื่อไฟล์ หากไฟล์ที่ต้องการเปิดอยู่ในตำแหน่งเดียวกันกับไฟโปรแกรมที่ใช้รัน ไม่ต้องระบุตำแหน่ง

mode โหมดในการเปิดไฟล์ หากไม่กำหนดจะเป็นการเปิดไฟล์ในโหมดอ่านอย่างเดียว (r)

buffering กำหนดขนาดหน่วยความจำชั่วคราวสำหรับพักข้อมูลก่อนนำไปประมวลผลจะกำหนดหรือไม่กำหนดก็ได้ ค่าปกติ คือ -1

  • ถ้ากำหนดเท่ากับ 0 เป็นการระบุไม่ใช้หน่วยความจำและใช้ได้เฉพาะกับโหมดไบนารีเท่านั้น

  • ถ้ากำหนดเท่ากับ 1 เป็นการอ่านและเขียนไฟล์ทีละ 1 บรรทัดและใช้กับโหมดเท็กซ์ไฟล์เท่านั้น

  • ถ้ากำหนดมากกว่า 1 เป็นการจองหน่วยความจำบัฟเฟอร์ตามขนาดที่กำหนด