Chuyển tới nội dung chính
PYTHONPython Core

File trong Python

Học cách mở, đọc, ghi và đóng file trong Python bằng with open.

Độ khóCơ bản
Thời lượng28 phút
Thẻpython, files, with-open, io

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

Python Files

Mô phỏng đọc và ghi file

Bước 1/9
notes.txtmode: w
File đang rỗng
Trạng tháiMở file
Con trỏĐầu file
Buffer-

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

Độ phức tạp thời gianO(n)
Độ phức tạp bộ nhớO(n)

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 w khi 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

Quiz Python Files

Kiểm tra bài File trong Python

0/4
1. Vì sao nên dùng with open khi làm việc với file?
2. Chế độ "w" có điểm nào cần cẩn thận?
3. Muốn thêm nội dung vào cuối file mà không xóa nội dung cũ, nên dùng mode nào?
4. Tham số encoding="utf-8" hữu ích khi nào?

Luyện tập

  1. Tạo file todo.txt và ghi 3 việc cần làm, mỗi việc một dòng.
  2. Đọc file todo.txt và in từng dòng kèm số thứ tự.
  3. Dùng mode `a` để thêm một việc mới vào cuối file.
  4. 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.