I/O tệp Python: Đọc và ghi tệp an toàn

Tìm hiểu cách đọc và ghi tệp bằng Python. Làm chủ các trình quản lý open(), read(), write() và bối cảnh để xử lý các thao tác tệp một cách an toàn mà không bị rò rỉ tài nguyên.

Thử trong Trình chỉnh sửa

Tổng quan

Đầu vào/đầu ra tệp (I/O) là một khả năng cơ bản cho phép các chương trình Python tương tác với bộ lưu trữ liên tục của máy tính. Cho dù bạn đang xây dựng một trình ghi nhật ký đơn giản, đọc tệp cấu hình hay xử lý mảng dữ liệu lớn, chương trình của bạn cần một cách đáng tin cậy để mở, đọc, ghi và đóng tệp trên đĩa. Python cung cấp các hàm rõ ràng, tích hợp sẵn để giúp tương tác hệ thống tệp trở nên đơn giản và đa nền tảng.

Công cụ chính để truy cập tệp trong Python là hàm `open()` được tích hợp sẵn. Hàm này chấp nhận đường dẫn tệp và chuỗi chế độ. Chế độ này xác định cách truy cập tệp: `'r'` để đọc, `'w'` để ghi (ghi đè lên tệp), `'a'` để thêm nội dung vào cuối và `'b'` cho chế độ nhị phân (hữu ích cho hình ảnh hoặc dữ liệu được tuần tự hóa). Điều quan trọng là bất cứ khi nào bạn mở một tệp, nó sẽ sử dụng một trình điều khiển của hệ điều hành. Nếu không đóng được tệp, bạn có thể gây rò rỉ bộ nhớ hoặc sự cố khóa tệp.

Để đảm bảo rằng các tệp luôn được đóng đúng cách, các nhà phát triển Python sử dụng câu lệnh `with` để triển khai trình quản lý bối cảnh. Khi sử dụng `with open(...) as file:`, Python sẽ tự động đóng phần xử lý tệp sau khi khối mã thoát ra, ngay cả khi xảy ra ngoại lệ không mong muốn bên trong. Việc đọc dữ liệu có thể được thực hiện từng dòng một bằng cách sử dụng `for line in file:` hoặc tất cả cùng một lúc thông qua `.read()`, `.readline()` hoặc `.readlines()`. Việc viết văn bản được xử lý thông qua `.write()` hoặc `.writelines()`, cho phép thao tác tệp trơn tru, an toàn và hiệu quả.

Đầu ra mã & thực thi

Viết lời chào vào một tệp văn bản tạm thời và đọc ngược từng dòng bằng cách sử dụng trình quản lý bối cảnh an toàn.

filename = "sample.txt"

# Writing to a file
with open(filename, "w") as file:
    file.write("Hello, Python coder!\n")
    file.write("This is a line in a file.\n")
    file.write("File I/O is simple.\n")

print("File written successfully.\n--- Reading File ---")

# Reading from a file line by line
with open(filename, "r") as file:
    for index, line in enumerate(file, 1):
        print(f"Line {index}: {line.strip()}")
Đầu ra thiết bị đầu cuối
File written successfully.
--- Reading File ---
Line 1: Hello, Python coder!
Line 2: This is a line in a file.
Line 3: File I/O is simple.

Triển khai từng bước

  • Lỗi ghi nhật ký và đầu ra chương trình
  • Đọc tệp cấu hình (ví dụ: .env hoặc config.txt)
  • Lưu báo cáo người dùng hoặc xuất bản tóm tắt phân tích

Câu hỏi thường gặp

Sự khác biệt giữa chế độ ghi và chắp thêm là gì?

Chế độ ghi ('w') cắt ngắn tệp về độ dài bằng 0, xóa mọi nội dung hiện có trước khi ghi. Chế độ chắp thêm ('a') đặt con trỏ ở cuối, thêm văn bản mới mà không xóa nội dung hiện có.

Tại sao tôi nên sử dụng câu lệnh with?

Câu lệnh with đóng vai trò như một trình quản lý ngữ cảnh, đảm bảo các tệp được đóng tự động, giúp ngăn ngừa rò rỉ bộ nhớ và lỗi khóa tệp.

Chủ đề liên quan

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.