บทที่ 7: การจัดการไฟล์ (File Handling)
7.2 ตัวอย่างการจัดการไฟล์ง่าย ๆ เช่น การอ่านไฟล์ข้อมูลและเก็บข้อมูลใน Lists
การจัดการไฟล์เป็นทักษะสำคัญในโปรแกรมมิ่ง และเราสามารถนำข้อมูลที่อ่านจากไฟล์มาเก็บใน ลิสต์ (Lists) เพื่อนำไปประมวลผลต่อได้ การอ่านไฟล์และเก็บข้อมูลในลิสต์เป็นเรื่องที่ทำได้ง่ายและมีประโยชน์เมื่อต้องการจัดการข้อมูลหลายชุดจากไฟล์เดียว บทเรียนนี้จะอธิบายขั้นตอนการอ่านไฟล์และเก็บข้อมูลในลิสต์ด้วยตัวอย่างที่เข้าใจง่าย
1. การอ่านข้อมูลจากไฟล์และเก็บในลิสต์
เราสามารถอ่านข้อมูลจากไฟล์และเก็บแต่ละบรรทัดไว้ในลิสต์ได้โดยใช้ฟังก์ชัน readlines() ซึ่งจะอ่านทุกบรรทัดในไฟล์และคืนค่าเป็นลิสต์ของสตริงที่แต่ละตัวแทนข้อมูลในแต่ละบรรทัด
ตัวอย่างการอ่านไฟล์และเก็บข้อมูลในลิสต์
# เปิดไฟล์ในโหมดอ่าน
with open("data.txt", "r") as file:
# อ่านข้อมูลทุกบรรทัดและเก็บในลิสต์
data_list = file.readlines()
# พิมพ์ข้อมูลที่เก็บในลิสต์
print(data_list)
อธิบาย: โปรแกรมนี้เปิดไฟล์ data.txt ในโหมดอ่าน (r) และใช้ readlines() เพื่ออ่านข้อมูลทั้งหมดในไฟล์และเก็บในลิสต์ data_list ข้อมูลแต่ละบรรทัดในไฟล์จะกลายเป็นองค์ประกอบหนึ่งในลิสต์
2. การจัดการข้อมูลในลิสต์ที่อ่านจากไฟล์
หลังจากที่ข้อมูลถูกเก็บในลิสต์แล้ว เราสามารถจัดการข้อมูลเหล่านั้น เช่น ลบอักขระพิเศษ, แยกข้อมูลที่เป็นตัวเลข, หรือแปลงข้อมูลเพื่อใช้งานต่อ
ตัวอย่างการจัดการข้อมูลหลังจากอ่านเข้าในลิสต์
สมมติว่าไฟล์ data.txt มีเนื้อหาแบบนี้:
John,25
Alice,30
Bob,22
เราสามารถอ่านข้อมูลและจัดการแต่ละบรรทัดโดยการแยกชื่อและอายุเก็บไว้ในลิสต์ที่จัดการแล้วได้:
# เปิดไฟล์ในโหมดอ่าน
with open("data.txt", "r") as file:
# อ่านข้อมูลทุกบรรทัดและเก็บในลิสต์
data_list = file.readlines()
# ลบตัวอักษร newline และแยกข้อมูลชื่อกับอายุเก็บในลิสต์ใหม่
processed_data = []
for line in data_list:
# ลบอักขระ newline และแยกข้อมูลด้วยเครื่องหมายจุลภาค
name, age = line.strip().split(',')
# เพิ่มข้อมูลลงในลิสต์ที่จัดการแล้ว
processed_data.append((name, int(age)))
# พิมพ์ข้อมูลที่จัดการแล้ว
print(processed_data)
อธิบาย: ในตัวอย่างนี้ เราใช้ strip() เพื่อลบอักขระ newline (\n) ที่ติดมากับแต่ละบรรทัด และใช้ split(',') เพื่อแยกข้อมูลชื่อและอายุ จากนั้นเก็บข้อมูลที่จัดการแล้วเป็น tuple ของชื่อและอายุในลิสต์ processed_data
ผลลัพธ์:
[('John', 25), ('Alice', 30), ('Bob', 22)]
3. การใช้ข้อมูลที่อ่านจากไฟล์ในโปรแกรม
หลังจากที่เราอ่านข้อมูลจากไฟล์และเก็บไว้ในลิสต์เรียบร้อยแล้ว เราสามารถนำข้อมูลนั้นไปใช้งานต่อ เช่น การประมวลผล การคำนวณ หรือการแสดงผลในโปรแกรมของเราได้
ตัวอย่างการประมวลผลข้อมูลที่เก็บในลิสต์
สมมติว่าเราต้องการคำนวณอายุเฉลี่ยของคนที่อยู่ในไฟล์ data.txt เราสามารถทำได้ดังนี้:
# คำนวณอายุเฉลี่ยจากข้อมูลที่เก็บในลิสต์ processed_data
total_age = 0
for person in processed_data:
total_age += person[1] # เพิ่มอายุแต่ละคนใน total_age
average_age = total_age / len(processed_data) # คำนวณค่าเฉลี่ย
print("Average age:", average_age)
อธิบาย: โปรแกรมจะรวมอายุทั้งหมดจากลิสต์ processed_data และคำนวณอายุเฉลี่ยโดยการหารด้วยจำนวนคนในลิสต์
4. การเขียนข้อมูลจากลิสต์กลับไปที่ไฟล์
เราสามารถเขียนข้อมูลที่เก็บในลิสต์กลับไปที่ไฟล์ได้โดยใช้ฟังก์ชัน write() หรือ writelines() ในโหมดเขียน (w) หรือโหมดเพิ่มข้อมูล (a)
ตัวอย่างการเขียนข้อมูลจากลิสต์กลับไปที่ไฟล์
# ข้อมูลที่จะเขียนลงในไฟล์
data_to_write = ["John,25\n", "Alice,30\n", "Bob,22\n"]
# เปิดไฟล์ในโหมดเขียน
with open("output.txt", "w") as file:
# เขียนข้อมูลลงในไฟล์
file.writelines(data_to_write)
อธิบาย: ข้อมูลที่เก็บในลิสต์ data_to_write ถูกเขียนลงในไฟล์ output.txt โดยใช้ฟังก์ชัน writelines() ซึ่งจะเขียนข้อมูลทั้งหมดในลิสต์ลงในไฟล์พร้อมกัน
สรุป
การอ่านไฟล์และเก็บข้อมูลในลิสต์เป็นวิธีที่สะดวกในการจัดการข้อมูลที่มาในรูปแบบของข้อความ การใช้ฟังก์ชัน readlines() ทำให้เราสามารถนำข้อมูลจากไฟล์มาจัดการภายในลิสต์ และนำไปประมวลผลต่อได้ตามความต้องการ ไม่ว่าจะเป็นการจัดการข้อมูล การคำนวณ หรือการเขียนข้อมูลกลับไปที่ไฟล์ การเรียนรู้วิธีนี้จะช่วยให้การทำงานกับข้อมูลในไฟล์มีความยืดหยุ่นและง่ายขึ้นมาก