File trong Python
Học cách mở, đọc, ghi và đóng file trong Python bằng with open.
Mục tiêu học tập
- Hiểu file là nơi lưu dữ liệu bên ngoài chương trình.
- Phân biệt các mode r, w, a khi mở file.
- Biết dùng with open để file được đóng tự động.
- Đọc và ghi được file text có tiếng Việt bằng encoding utf-8.
Kiến thức cần có
- Biết biến và chuỗi trong Python.
- Biết hàm print và cách gọi hàm.
- Biết khối lệnh thụt lề trong Python.
Video bài học
Lý thuyết
File giúp chương trình lưu dữ liệu sau khi chương trình kết thúc. Ví dụ: lưu ghi chú, lưu điểm số, đọc cấu hình, hoặc xuất báo cáo.
Trong Python, cách nên dùng nhất là with open(...). Khối with sẽ tự động đóng file khi xử lý xong, giúp tránh quên close().
r: đọc file. File phải tồn tại.w: ghi file mới. Nếu file đã có, nội dung cũ bị ghi đè.a: thêm nội dung vào cuối file.encoding="utf-8": giúp đọc ghi tiếng Việt ổn định.
Trực quan hóa
Mô phỏng đọc và ghi file
File đang rỗng
Mở notes.txt với chế độ w. Nếu file chưa có, Python sẽ tạo file mới. Nếu file đã có, nội dung cũ bị ghi đè.
File trong Python nên được mở bằng with open(...) để đọc, ghi và đóng file an toàn.
with open('notes.txt', 'w', encoding='utf-8') as file:file.write('Xin chào Python\n')with open('notes.txt', 'a', encoding='utf-8') as file:file.write('Học file với with open\n')with open('notes.txt', 'r', encoding='utf-8') as file:content = file.read()print(content)
Ví dụ code
with open('notes.txt', 'w', encoding='utf-8') as file:
file.write('Xin chào Python\n')
with open('notes.txt', 'a', encoding='utf-8') as file:
file.write('Học file với with open\n')
with open('notes.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
Kết quả chương trình
Xin chào Python
Học file với with open
Độ phức tạp
Nếu file có n ký tự, read() cần đọc qua n ký tự nên thời gian là O(n). Khi đọc toàn bộ file vào biến, bộ nhớ cũng là O(n).
Lỗi thường gặp
- Dùng mode
wkhi muốn thêm dòng, làm mất nội dung cũ. - Quên thêm
\n, khiến các dòng bị dính liền nhau. - Không dùng
encoding="utf-8"khi file có tiếng Việt. - Đọc file quá lớn bằng
read()một lần thay vì đọc từng dòng.
Quiz
Kiểm tra bài File trong Python
Luyện tập
- Tạo file todo.txt và ghi 3 việc cần làm, mỗi việc một dòng.
- Đọc file todo.txt và in từng dòng kèm số thứ tự.
- Dùng mode `a` để thêm một việc mới vào cuối file.
- Viết chương trình đếm file có bao nhiêu dòng.
Tóm tắt
Làm việc với file gồm ba ý chính: mở file đúng mode, đọc/ghi dữ liệu, và đóng file.
with open là cách gọn và an toàn nhất cho phần lớn trường hợp vì file được đóng tự động sau khi xử lý xong.