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.
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()}")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ìm hiểu cách viết trình quản lý bối cảnh tùy chỉnh bằng Python. Nắm vững trình trang trí trình quản lý bối cảnh và các phương thức __enter__/__exit__ để đảm bảo an toàn tài nguyên.
Phân tích cú pháp JSON của PythonTìm hiểu cách đọc, viết và phân tích dữ liệu JSON trong Python. Nắm vững json.loads, json.dumps và tùy chỉnh bộ mã hóa/giải mã JSON.
Python CSVTìm hiểu cách xử lý dữ liệu CSV bằng Python. Nắm vững csv.reader, csv.writer và DictReader/DictWriter để phân tích cú pháp bảng hiệu quả.
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.
Cách đọc tệp bằng Python
Tìm hiểu cách đọc tệp bằng Python. Nắm vững câu lệnh mở, dòng đọc, dòng đọc và xử lý các ngoại lệ tệp một cách an toàn.
Bảng cheat phương pháp từ điển Python
Tìm hiểu các phương pháp từ điển Python. Hướng dẫn tham khảo đầy đủ về việc chèn, truy xuất, cập nhật và kiểm tra cặp khóa-giá trị.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.