Python จัดการไฟล์ได้โดยตรง ไม่ต้อง import library เพิ่มเติม ใช้ built-in function open() เพื่อรับ file object ที่มีเมธอดและแอตทริบิวต์สำหรับจัดการไฟล์
ลำดับขั้นตอนการทำงานกับไฟล์
- เปิดไฟล์ (
open()) - อ่านหรือเขียน
- ปิดไฟล์ (
close())
ฟังก์ชัน open()
file_obj = open("filename", "mode")
| พารามิเตอร์ | คำอธิบาย |
|---|---|
filename | ชื่อไฟล์ หรือ path เต็ม |
mode | โหมดการเปิดไฟล์ (ดูตารางด้านล่าง) |
ตัวอย่าง
f = open("pytube1.py") # โหมดเริ่มต้น 'r' (อ่าน text)
f = open(r"c:\users\rajesh\readme.txt") # raw string สำหรับ Windows path
โหมดการเปิดไฟล์ (File Modes)
| โหมด | คำอธิบาย |
|---|---|
'r' | อ่าน (default) - error หากไฟล์ไม่มี |
'w' | เขียน - สร้างไฟล์ใหม่ หรือ truncate ไฟล์เดิม |
'x' | สร้างเฉพาะ - error หากไฟล์มีอยู่แล้ว |
'a' | ต่อท้าย (append) - สร้างไฟล์ใหม่หากไม่มี |
't' | Text mode (default) |
'b' | Binary mode |
'+' | อ่านและเขียน (update) |
ตัวอย่างการรวมโหมด
open("file.txt") # 'rt' - อ่าน text
open("file.txt", "w") # 'wt' - เขียน text
open("image.jpg", "r+b") # อ่าน/เขียน binary
แนะนำระบุ encoding เสมอ
f = open("file.txt", mode="r", encoding="utf-8")
สร้างและเขียนไฟล์ Text
f = open("textfile.txt", "w")
f.write("Hello, Python")
f.write("\nThis is our first line")
f.write("\nThis is our second line")
f.close()
อ่านไฟล์ Text หลายวิธี
1. อ่านทั้งไฟล์: read()
f = open("textfile.txt", "r")
content = f.read()
print(content)
2. อ่านจำนวนตัวอักษร: read(n)
f = open("textfile.txt", "r")
print(f.read(13)) # "Hello, Python"
3. อ่านทีละบรรทัด: readline()
f = open("textfile.txt", "r")
print(f.readline()) # บรรทัดแรก
print(f.readline()) # บรรทัดที่สอง
4. อ่านทุกบรรทัดเป็น list: readlines()
f = open("textfile.txt", "r")
lines = f.readlines()
print(lines) # ['Hello, Python\n', 'This is our first line\n', ...]
5. วนลูปอ่านบรรทัด (แนะนำ - ประหยัดหน่วยความจำ)
f = open("textfile.txt", "r")
for line in f:
print(line, end='')
เขียนไฟล์ (เขียนทับ / เพิ่มท้าย)
# เขียนทับ (w)
f = open("textfile.txt", "w")
f.write("New content")
f.close()
# เพิ่มท้าย (a)
f = open("textfile.txt", "a")
f.write("\nAppended line")
f.close()
ปิดไฟล์: close()
f = open("textfile.txt", "r")
f.close()
f.read() # ValueError: I/O operation on closed file.
คำสั่ง with Statement (แนะนำเป็นหลัก)
ปิดไฟล์อัตโนมัติ จัดการ exception ได้ดี โค้ดสะอาดกว่า
อ่านไฟล์
with open("textfile.txt") as f:
for line in f:
print(line, end='')
เขียนไฟล์
with open("textfile.txt", "a") as f:
f.write("\nNew line added")
แยกคำในไฟล์ Text: split()
with open("textfile.txt", "r") as f:
for line in f:
words = line.split() # แยกด้วย whitespace
print(words)
# หรือแยกด้วยตัวกำหนดเอง
words = line.split(":")
สรุปแนวทางปฏิบัติที่ดี (Best Practices)
- ใช้ with statement เสมอ
- ระบุ encoding="utf-8" อย่างชัดเจน
- ใช้ for line in f สำหรับอ่านไฟล์ขนาดใหญ่ (ไม่โหลดทั้งไฟล์เข้าหน่วยความจำ)
- ใช้ binary mode ('b') สำหรับไฟล์รูปภาพ ไฟล์เสียง ไฟล์ 실행