Logo

08 การอ่านเขียนไฟล์และการจัดการ Error

การอ่านเขียนไฟล์และการจัดการ Error

งานจริงมักต้องอ่านข้อมูลจากไฟล์ เขียนผลลัพธ์ออกไฟล์ และรับมือ error เช่น ไฟล์ไม่มีหรือข้อมูลไม่ถูกต้อง

อ่านไฟล์ Text

with open("notes.txt", "r", encoding="utf-8") as file:
    content = file.read()

print(content)

with ช่วยปิดไฟล์ให้อัตโนมัติเมื่อทำงานเสร็จ

อ่านทีละบรรทัด

with open("notes.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())

เขียนไฟล์

with open("result.txt", "w", encoding="utf-8") as file:
    file.write("สรุปผลการประมวลผล\n")

โหมดที่ใช้บ่อย:

  • r อ่านไฟล์
  • w เขียนทับไฟล์เดิม
  • a เขียนต่อท้ายไฟล์เดิม

try และ except

try:
    number = int("abc")
except ValueError:
    print("แปลงค่าเป็นตัวเลขไม่ได้")

จัดการไฟล์ไม่มี

try:
    with open("missing.txt", "r", encoding="utf-8") as file:
        content = file.read()
except FileNotFoundError:
    print("ไม่พบไฟล์")

finally

finally จะทำงานเสมอ ไม่ว่าจะเกิด error หรือไม่

try:
    print(10 / 2)
except ZeroDivisionError:
    print("หารด้วยศูนย์ไม่ได้")
finally:
    print("จบการทำงาน")

ตัวอย่างรวม

try:
    with open("numbers.txt", "r", encoding="utf-8") as file:
        numbers = [int(line.strip()) for line in file]

    total = sum(numbers)

    with open("summary.txt", "w", encoding="utf-8") as file:
        file.write(f"total={total}\n")
except FileNotFoundError:
    print("ไม่พบไฟล์ numbers.txt")
except ValueError:
    print("ข้อมูลในไฟล์ต้องเป็นตัวเลข")

แบบฝึกหัด

  1. สร้างไฟล์ expenses.txt ใส่ตัวเลขค่าใช้จ่ายทีละบรรทัด
  2. เขียน Python อ่านไฟล์นี้
  3. คำนวณยอดรวม
  4. เขียนผลลัพธ์ลง expense_summary.txt
  5. เพิ่ม try/except เพื่อจัดการกรณีไฟล์ไม่มี