Bảy, Xử lý tệp tin
Hệ điều hành Windows quy định: tên tệp tối đa 255 ký tự
1. Đọc toàn bộ tệp txt
Đường dẫn tệp
# Đường dẫn tương đối
# Đối với tệp txt nằm trong đường dẫn xxx\xxx.txt từ vị trí tệp hiện tại
# Đường dẫn tuyệt đối
# Thêm 'r' trước dấu gạch chéo ngược, khai báo chuỗi không cần thoát
f = open(r"C:\Users\86157\Desktop\test.txt", 'r', encoding="UTF-8")
# Dùng dấu gạch chéo ngược đôi
t = open("C:\\Users\\86157\\Desktop\\test.txt", 'r', encoding="UTF-8")
# Dùng dấu gạch chéo xuông, hoạt động trên cả Linux và Windows
e = open("C:/Users/86157/Desktop/test.txt", 'r', encoding="UTF-8")
'r': chế độ đọc; w: chế độ ghi; tệp tồn tại sẽ được xóa nội dung rồi ghi, tệp không tồn tại sẽ tự động tạo mới a: chế độ thêm; tệp tồn tại sẽ thêm nội dung vào cuối, tệp không tồn tại sẽ tạo mới r+: chế độ đọc và ghi;
Lưu ý ảnh hưởng của con trỏ tệp khi đọc
| Mã lệnh | Chức năng |
|---|---|
| tệp_mở = open("đường_dẫn", 'chế_độ', encoding="UTF-8") | Mở tệp, mặc định encoding là UTF-8 |
| tệp.read(số) | Đọc số lượng ký tự chỉ định, lưu vào biến chuỗi |
| tệp.readlines() | Đọc toàn bộ tệp theo dòng, lưu vào danh sách |
| tệp.readline() | Mỗi lần gọi đọc một dòng, lưu vào biến chuỗi |
| tệp.close() | Đóng tệp, giải phóng tài nguyên, **có sẵn phương thức flush** |
| tệp.write(nội_dung) | Ghi nội dung vào tệp |
| tệp.flush() | Ghi nội dung đệm vào đĩa cứng |
Vòng lặp for đọc từng dòng tệp:
for dong in open("test.txt",'r'):
print(dong)
Cú pháp with open tự động đóng tệp sau khi hoàn thành
with open("test.txt",'r') as f:
print(f.read())
# Phương pháp 1
f = open(r"C:\Users\86157\Desktop\test.txt", 'r', encoding="UTF-8")
noidung = f.read()
dem = noidung.count("bạn")
print(f""bạn" xuất hiện {dem} lần trong tệp")
f.close()
# Phương pháp 2
dem = 0
d = open(r"C:\Users\86157\Desktop\test.txt", 'r', encoding="UTF-8")
for dong in d:
dong = dong.strip() # Loại bỏ ký tự xuống dòng và khoảng trắng ở đầu cuối
for tu in dong:
print(tu)
if tu == "bạn":
dem += 1
print(f""bạn" xuất hiện {dem} lần trong tệp")
d.close()
2. Ghi vào tệp txt
Khi gọi trực tiếp write, nội dung sẽ tích lũy trong bộ đệm, khi ghi nhiều dòng, hàm này sẽ tự động thêm ký tự xuống dòng.
Khi gọi flush, nội dung mới được ghi vào đĩa cứng, giúp tránh việc ghi đĩa thường xuyên gây giảm hiệu suất.
Để ghi dữ liệu dạng số vào tệp văn bản, phải dùng hàm str() để chuyển đổi sang dạng chuỗi
Tám, Xử lý ngoại lệ
1. Bắt ngoại lệ
# 1. Bắt ngoại lệ thông thường
try:
# Các câu lệnh có thể gây lỗi
except:
# Hành động khi có ngoại lệ
# 2. Bắt tất cả ngoại lệ
try:
# Các câu lệnh có thể gây lỗi
except Exception as e:
# Hành động khi có ngoại lệ
# 3. Bắt ngoại lệ chỉ định
try:
# Các câu lệnh có thể gây lỗi
except (LoạiNgoạiLệ1, LoạiNgoạiLệ2, ...) as e:
# Hành động khi có ngoại lệ
else:
# Hành động khi không có ngoại lệ, tùy chọn
finally:
# Hành động luôn được thực hiện dù có ngoại lệ hay không, ví dụ đóng tệp, tùy chọn
2. Truyền ngoại lệ
Ngoại lệ có tính chất truyền, có thể bắt ở cấp độ cao hơn