การอ่านไฟล์ใน Python สามารถทำได้หลายวิธี โดยใช้ฟังก์ชันที่มีอยู่ในไลบรารีมาตรฐานของ Python อย่างเช่นฟังก์ชัน open() ต่อไปนี้เป็นตัวอย่างของการอ่านไฟล์ในรูปแบบต่าง ๆ และการประยุกต์ใช้งาน
การอ่านไฟล์ทั้งหมดในครั้งเดียว (read())
การใช้ฟังก์ชัน read() จะทำการอ่านไฟล์ทั้งหมดและคืนค่าเป็นสตริง สามารถใช้ในกรณีที่ไฟล์มีขนาดไม่ใหญ่มาก
# ตัวอย่างการอ่านไฟล์ทั้งหมดในครั้งเดียว
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)open("example.txt", "r"): เปิดไฟล์ในโหมดอ่าน (r) และใช้withเพื่อให้ระบบปิดไฟล์ให้อัตโนมัติเมื่อเสร็จสิ้นfile.read(): อ่านข้อมูลทั้งหมดจากไฟล์- ข้อดีของวิธีนี้คือ อ่านง่าย แต่ไม่เหมาะกับไฟล์ขนาดใหญ่เพราะจะใช้หน่วยความจำเยอะ
การอ่านทีละบรรทัด (readline())
ในบางกรณี เราอาจต้องการอ่านไฟล์ทีละบรรทัด วิธีนี้เหมาะสำหรับการประมวลผลข้อมูลทีละบรรทัด
# ตัวอย่างการอ่านไฟล์ทีละบรรทัด
with open("example.txt", "r", encoding="utf-8") as file:
line = file.readline()
while line:
print(line.strip()) # strip() เพื่อลบช่องว่างหรือ newline ออก
line = file.readline()file.readline(): อ่านไฟล์ทีละบรรทัดและคืนค่าบรรทัดที่อ่าน หากถึงจุดสิ้นสุดของไฟล์ จะคืนค่าเป็นสตริงว่าง
การอ่านไฟล์ทั้งหมดเป็นลิสต์ของบรรทัด (readlines())
การใช้ readlines() จะทำการอ่านไฟล์ทั้งหมดและคืนค่าเป็นลิสต์ที่แต่ละบรรทัดของไฟล์เป็นองค์ประกอบของลิสต์
# ตัวอย่างการอ่านไฟล์เป็นลิสต์
with open("example.txt", "r", encoding="utf-8") as file:
lines = file.readlines()
for line in lines:
print(line.strip())- ข้อดี: ง่ายต่อการนำไปประมวลผลแบบเป็นรายการ (list)
- ข้อเสีย: เหมือนกับ
read()ในกรณีที่ไฟล์มีขนาดใหญ่จะกินหน่วยความจำมาก
การอ่านไฟล์แบบไบนารี (rb)
การอ่านไฟล์ไบนารี เช่น รูปภาพ หรือไฟล์ที่ไม่ใช่ข้อความ
# ตัวอย่างการอ่านไฟล์ไบนารี
with open("image.png", "rb") as binary_file:
binary_content = binary_file.read()
print(binary_content[:100]) # แสดงไบต์ 100 ตัวแรกของไฟล์rb: เปิดไฟล์ในโหมดไบนารี (rสำหรับอ่าน,bสำหรับไบนารี)- การอ่านไฟล์ไบนารีเหมาะสำหรับไฟล์เช่นภาพ, วิดีโอ, ไฟล์เสียง ฯลฯ
การอ่านไฟล์ขนาดใหญ่ทีละบล็อก
เมื่อเราต้องการจัดการไฟล์ขนาดใหญ่ เราสามารถอ่านไฟล์ทีละบล็อกเพื่อประหยัดหน่วยความจำ
# ตัวอย่างการอ่านไฟล์ทีละบล็อก
with open("large_file.txt", "r", encoding="utf-8") as file:
while True:
chunk = file.read(1024) # อ่านทีละ 1024 ไบต์ (หรือ 1 KB)
if not chunk:
break
print(chunk)การอ่านทีละบล็อกช่วยลดการใช้หน่วยความจำในกรณีไฟล์ขนาดใหญ่
การใช้ Path จากไลบรารี pathlib
Python เวอร์ชันใหม่ ๆ สนับสนุนการใช้ pathlib.Path เพื่ออ่านไฟล์ได้ง่ายขึ้น
from pathlib import Path
# ตัวอย่างการใช้ pathlib
file_path = Path("example.txt")
content = file_path.read_text(encoding="utf-8")
print(content)read_text(): อ่านไฟล์ในรูปแบบของข้อความ- นอกจากนี้
pathlibยังช่วยในการจัดการเส้นทางไฟล์ได้อย่างมีประสิทธิภาพ
การใช้ csv สำหรับการอ่านไฟล์ CSV
หากเราต้องการอ่านไฟล์ CSV เราสามารถใช้ไลบรารี csv
import csv
# ตัวอย่างการอ่านไฟล์ CSV
with open("data.csv", "r", encoding="utf-8") as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
print(row)csv.reader(): ใช้สำหรับอ่านไฟล์ CSV โดยข้อมูลในแต่ละบรรทัดจะถูกแยกเป็นรายการตามคอลัมน์
สรุป
การอ่านไฟล์ใน Python มีหลายรูปแบบ ขึ้นอยู่กับประเภทไฟล์และวัตถุประสงค์ในการใช้งาน:
read(): อ่านทั้งหมดในครั้งเดียวreadline(): อ่านทีละบรรทัดreadlines(): อ่านทั้งหมดและจัดเก็บในลิสต์rb: อ่านไฟล์ในรูปแบบไบนารี- อ่านทีละบล็อก: สำหรับไฟล์ขนาดใหญ่
- ใช้
pathlib: เพื่อจัดการไฟล์ได้สะดวก - ใช้
csv: สำหรับการจัดการไฟล์ CSV
