บทที่ 7: การจัดการไฟล์ (File Handling)

7.1 การอ่านและเขียนไฟล์ด้วย Python (open(), read(), write())

การจัดการไฟล์ (File Handling) เป็นเรื่องสำคัญเมื่อเราต้องการเก็บหรืออ่านข้อมูลจากไฟล์ในโปรแกรม Python มีเครื่องมือหลายอย่างที่ช่วยให้เราสามารถอ่านและเขียนข้อมูลลงในไฟล์ได้ง่าย เช่น ฟังก์ชัน open(), read(), และ write()

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

ฟังก์ชัน open() ใช้เพื่อเปิดไฟล์สำหรับการอ่านหรือเขียน โดยเราสามารถระบุโหมด (mode) การทำงานได้ เช่น อ่านไฟล์ (r), เขียนไฟล์ (w), หรือเพิ่มข้อมูลในไฟล์ (a)

โครงสร้างการใช้ open()

file = open("ชื่อไฟล์", "โหมด")

"r": เปิดไฟล์ในโหมดอ่าน (read)
"w": เปิดไฟล์ในโหมดเขียน (write) ซึ่งจะลบข้อมูลเดิมในไฟล์ออกก่อน
"a": เปิดไฟล์ในโหมดเพิ่มข้อมูล (append) ซึ่งจะเขียนข้อมูลต่อท้ายไฟล์เดิม
"b": ใช้สำหรับการอ่านหรือเขียนไฟล์ในโหมดไบนารี (binary)

2. การอ่านไฟล์ด้วย read()

เมื่อเปิดไฟล์ในโหมดอ่าน (r) เราสามารถใช้ฟังก์ชัน read() เพื่ออ่านข้อมูลทั้งหมดในไฟล์ออกมาได้ นอกจากนี้ยังมีฟังก์ชัน readline() สำหรับการอ่านทีละบรรทัด และ readlines() สำหรับการอ่านทุกบรรทัดเป็นลิสต์

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

# เปิดไฟล์ในโหมดอ่าน
file = open("example.txt", "r")

# อ่านข้อมูลทั้งหมดจากไฟล์
content = file.read()

print(content)

# ปิดไฟล์เมื่อเสร็จสิ้น
file.close()

อธิบาย: ฟังก์ชัน open() เปิดไฟล์ example.txt ในโหมดอ่าน (r) และใช้ read() เพื่ออ่านข้อมูลทั้งหมดจากไฟล์ เมื่ออ่านเสร็จแล้ว เราควรปิดไฟล์โดยใช้ close() เพื่อให้ระบบจัดการไฟล์ได้อย่างถูกต้อง

ตัวอย่างการอ่านไฟล์ทีละบรรทัดด้วย readline()

# เปิดไฟล์ในโหมดอ่าน
file = open("example.txt", "r")

# อ่านทีละบรรทัด
line = file.readline()

while line:
    print(line.strip())
    line = file.readline()

file.close()
อธิบาย: โปรแกรมจะอ่านไฟล์ทีละบรรทัดโดยใช้ readline() จนกระทั่งไม่มีข้อมูลในไฟล์แล้ว และใช้ strip() เพื่อลบช่องว่างและตัวอักษร newline ที่ไม่ต้องการ

3. การเขียนไฟล์ด้วย write()

ฟังก์ชัน write() ใช้สำหรับเขียนข้อมูลลงในไฟล์ เมื่อเราเปิดไฟล์ในโหมดเขียน (w) หรือโหมดเพิ่มข้อมูล (a)

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

# เปิดไฟล์ในโหมดเขียน (ข้อมูลเก่าจะถูกลบ)
file = open("example.txt", "w")

# เขียนข้อมูลลงในไฟล์
file.write("Hello, World!\n")
file.write("This is a new line.\n")

# ปิดไฟล์เมื่อเสร็จสิ้น
file.close()

อธิบาย: เมื่อเปิดไฟล์ในโหมดเขียน (w), ฟังก์ชัน write() จะเขียนข้อมูลใหม่ลงในไฟล์ และลบข้อมูลเก่าออก หากต้องการเพิ่มข้อมูลใหม่โดยไม่ลบข้อมูลเก่า เราต้องใช้โหมดเพิ่มข้อมูล (a)

4. การเพิ่มข้อมูลในไฟล์ด้วยโหมด append

หากต้องการเพิ่มข้อมูลใหม่เข้าไปในไฟล์โดยไม่ลบข้อมูลเดิม เราสามารถใช้โหมด a (append) ได้

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

# เปิดไฟล์ในโหมดเพิ่มข้อมูล
file = open("example.txt", "a")

# เพิ่มข้อมูลใหม่ลงในไฟล์
file.write("Appending new data.\n")

# ปิดไฟล์เมื่อเสร็จสิ้น
file.close()

อธิบาย: ในโหมด append ข้อมูลใหม่จะถูกเพิ่มต่อท้ายไฟล์ โดยข้อมูลเดิมจะไม่ถูกลบ

5. การจัดการไฟล์อย่างปลอดภัยด้วย with

การใช้ with ช่วยให้การจัดการไฟล์ง่ายขึ้น และป้องกันปัญหาการลืมปิดไฟล์หลังจากใช้งานเสร็จ ฟังก์ชัน with จะปิดไฟล์ให้อัตโนมัติเมื่อสิ้นสุดบล็อกโค้ด

ตัวอย่างการใช้ with ในการจัดการไฟล์

# เปิดไฟล์ในโหมดอ่านด้วย with
with open("example.txt", "r") as file:
    content = file.read()
    print(content)

# ไม่ต้องปิดไฟล์ด้วยมือ เพราะ with จะจัดการให้
อธิบาย: การใช้ with ช่วยให้เราสามารถอ่านหรือเขียนไฟล์ได้โดยไม่ต้องปิดไฟล์ด้วยตนเอง เพราะระบบจะจัดการปิดไฟล์ให้อัตโนมัติเมื่อสิ้นสุดบล็อก with

สรุป

การจัดการไฟล์ใน Python ทำได้ง่ายและมีประสิทธิภาพด้วยฟังก์ชัน open(), read(), และ write() นอกจากนี้ การใช้คำสั่ง with ยังช่วยให้การจัดการไฟล์ปลอดภัยมากขึ้น การเรียนรู้การอ่านและเขียนไฟล์เป็นทักษะที่สำคัญในการพัฒนาโปรแกรมที่ต้องทำงานกับข้อมูลจำนวนมาก หรือการบันทึกผลลัพธ์ที่ต้องการเก็บไว้ใช้งานในอนาคต