Trước khi vào code, hiểu bản chất đã. Một file trên máy tính không phải là "một tờ giấy" — nó là một dãy bytes liên tục được hệ điều hành (OS) quản lý trên ổ đĩa. Khi Python "mở" một file, thực ra nó:
- Yêu cầu OS cấp một file descriptor (số nguyên đại diện cho file đang mở).
- Tạo một buffer trong RAM để đọc/ghi tạm (vì truy cập đĩa chậm hơn RAM ~1000-100000 lần).
- Trả về một file object (đối tượng Python) bao bọc tất cả thứ trên.