ถ้าโปรแกรมของคุณทำงานเสร็จแล้วปิดไป ข้อมูลทุกอย่างในตัวแปรจะหายวับไปกับตาครับ เพื่อให้ข้อมูลยังอยู่ (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 (เช่น การอ่านไฟล์ข้อมูลดิบ) เมื่อคุณคุมไฟล์ได้ คุณก็คุมข้อมูลได้ครับ