File Handling - จัดการไฟล์ อ่าน-เขียนข้อมูลอย่างมืออาชีพ

Last updated: January 24, 2026

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


1. การเปิดไฟล์ด้วยฟังก์ชัน open()

ก่อนจะทำอะไรกับไฟล์ เราต้อง "เปิด" มันก่อนครับ โดยใช้ฟังก์ชัน open() ซึ่งมีรูปแบบดังนี้:
file = open("ชื่อไฟล์.txt", "โหมดการทำงาน")

โหมดการทำงาน (File Modes) ที่ต้องรู้

เพื่อให้ Python ทำงานได้ถูกต้อง เราต้องระบุ "โหมด" ให้มันด้วยครับ:

โหมด (Mode) ความหมาย พฤติกรรม
"r" (Read) อ่านไฟล์ เปิดมาเพื่ออ่านอย่างเดียว (ถ้าไม่มีไฟล์จะ Error)
"w" (Write) เขียนไฟล์ เขียนทับข้อมูลเดิม (ถ้าไม่มีไฟล์จะสร้างให้ใหม่)
"a" (Append) เขียนต่อท้าย เขียนข้อมูลเพิ่มต่อจากของเดิม (ถ้าไม่มีไฟล์จะสร้างให้ใหม่)
"r+" อ่านและเขียน ทำได้ทั้งสองอย่างในไฟล์เดียว

2. วิธีการที่ปลอดภัยที่สุด: การใช้ "with open"

ในสมัยก่อน เมื่อเปิดไฟล์แล้วเราต้องสั่ง file.close() เสมอเพื่อคืนทรัพยากรให้ระบบ แต่ปัจจุบันโปรแกรมเมอร์นิยมใช้โครงสร้าง with ซึ่ง Python จะทำการปิดไฟล์ให้เราอัตโนมัติเมื่อทำงานเสร็จครับ

ตัวอย่างการเขียนไฟล์ (Write)

# สร้างไฟล์ใหม่และเขียนข้อความลงไป
with open("note.txt", "w", encoding="utf-8") as f:
    f.write("ยินดีต้อนรับสู่ Python 2026\n")
    f.write("บทเรียนการจัดการไฟล์สนุกมาก!")

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

# เปิดไฟล์เดิมมาอ่าน
with open("note.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print(content)

3. เทคนิคการอ่านข้อมูลแบบต่างๆ

บางครั้งไฟล์เรามีขนาดใหญ่มาก เราอาจจะไม่ต้องการอ่านทีเดียวทั้งหมด:

  • f.read(): อ่านข้อมูลทั้งหมดในไฟล์ออกมาเป็น String เดียว
  • f.readline(): อ่านทีละบรรทัด (เหมาะสำหรับไฟล์ขนาดใหญ่)
  • f.readlines(): อ่านทุกบรรทัดแล้วเก็บใส่ใน List

💡 Pro Tip (Encoding): หากคุณจัดการไฟล์ภาษาไทย อย่าลืมใส่ encoding="utf-8" ในฟังก์ชัน open() เสมอ เพื่อป้องกันปัญหา "ภาษาต่างดาว" หรืออ่านไม่ออกครับ


4. Workshop: ระบบบันทึกรายชื่อผู้เข้าชม (Log System)

ลองสร้างโปรแกรมที่รับชื่อจากผู้ใช้แล้วบันทึกต่อท้ายไฟล์ไปเรื่อยๆ ดูครับ:

import datetime

def save_log(username):
    now = datetime.datetime.now()
    timestamp = now.strftime("%Y-%m-%d %H:%M:%S")

    with open("visit_log.txt", "a", encoding="utf-8") as file:
        file.write(f"[{timestamp}] User: {username} เข้าสู่ระบบ\n")

# ทดสอบเรียกใช้
name = input("กรุณากรอกชื่อของคุณ: ")
save_log(name)
print("บันทึกข้อมูลสำเร็จ! ลองไปเช็กที่ไฟล์ visit_log.txt นะครับ")

สรุป

การจัดการไฟล์เป็นทักษะพื้นฐานที่แยกไม่ออกจากงานสาย Web Development (เช่น การเก็บ Log การเข้าใช้งาน) หรือสาย Data Science (เช่น การอ่านไฟล์ข้อมูลดิบ) เมื่อคุณคุมไฟล์ได้ คุณก็คุมข้อมูลได้ครับ