btvn.vn
Tìm kiếm Đăng nhập

Đọc và ghi tệp văn bản bằng Python

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Chuẩn bị tệp ngay trong thư mục bài tập

Tạo một thư mục thực hành riêng, lưu mã dưới tên `tep_van_ban.py` rồi chạy trong chính thư mục ấy. Bài này dùng dữ liệu giả, không cần dùng điểm thật. Tên tệp `ghi_chu.txt` là đường dẫn tương đối: Python tìm nó theo thư mục làm việc khi chạy chương trình.

Ghi mới, ghi thêm rồi đọc lại

Mã hoàn chỉnh: ```python with open("ghi_chu.txt", "w", encoding="utf-8") as f: print("Lan 8.0", file=f) print("Minh 7.5", file=f) with open("ghi_chu.txt", "a", encoding="utf-8") as f: print("Vy 9.0", file=f) with open("ghi_chu.txt", "r", encoding="utf-8") as f: for dong in f: print(dong.strip()) ``` Kết quả là ba dòng `Lan 8.0`, `Minh 7.5`, `Vy 9.0`. Chế độ `w` tạo tệp mới hoặc xóa nội dung cũ rồi ghi từ đầu; `a` ghi tiếp ở cuối; `r` chỉ đọc và cần tệp đã tồn tại. Chạy lại cả chương trình vẫn có đúng ba dòng vì bước `w` bắt đầu lại. Khối `with` tự đóng tệp khi kết thúc. Ghi rõ `encoding="utf-8"` giúp đọc, ghi tiếng Việt nhất quán giữa các máy; nếu bỏ tham số này, Python dùng mã hóa mặc định của môi trường, không thể kết luận rằng nó chỉ đọc được ASCII.

Chọn cách đọc theo nhiệm vụ

`f.readline()` lấy một dòng tiếp theo; đến hết tệp trả chuỗi rỗng. `f.readlines()` lấy các dòng còn lại thành danh sách, còn `for dong in f:` duyệt từng dòng mà không cần đưa toàn bộ tệp vào danh sách trước. Dòng đọc thường chứa kí tự xuống dòng; `strip()` bỏ khoảng trắng ở hai đầu để in gọn. Thử đổi `a` thành `w` ở khối thứ hai: tệp chỉ còn dòng `Vy 9.0`; đó là dấu hiệu đã ghi đè.

Bài luyện

Chế độ mở tệp nào ghi thêm vào cuối mà giữ nội dung cũ?
Chọn một đáp án

Bài luyện

Sau khi chạy lại toàn bộ chương trình mẫu, tệp `ghi_chu.txt` có bao nhiêu dòng?
Chọn một đáp án

Bài luyện

Vì sao chương trình ghi `encoding="utf-8"` khi làm việc với văn bản tiếng Việt?
Chọn một đáp án

Đang học