Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

File Objects ใน Python: การเปิด อ่าน เขียน และปิดไฟล์ฉบับสมบูรณ์

Python จัดการไฟล์ได้โดยตรง ไม่ต้อง import library เพิ่มเติม ใช้ built-in function open() เพื่อรับ file object ที่มีเมธอดและแอตทริบิวต์สำหรับจัดการไฟล์

ลำดับขั้นตอนการทำงานกับไฟล์

  1. เปิดไฟล์ (open())
  2. อ่านหรือเขียน
  3. ปิดไฟล์ (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') สำหรับไฟล์รูปภาพ ไฟล์เสียง ไฟล์ 실행