Trong quá trình phát triển ứng dụng Python, việc lưu trữ dữ liệu để sử dụng cho những lần chạy sau là nhu cầu vô cùng phổ biến. Khi chương trình kết thúc, dữ liệu trong bộ nhớ RAM sẽ mất đi, và file (tệp tin) chính là nơi giúp bạn lưu trữ dữ liệu bền vững trên ổ cứng. Trong bài viết thứ 11 của chuỗi bài học Python, chúng ta sẽ cùng khám phá cách mở, đọc, ghi và đóng file một cách an toàn và chuẩn mực nhất.
1. Phương Thức Mở Và Đóng File Cơ Bản
Để bắt đầu thao tác với một file, Python cung cấp hàm khởi tạo open() với cú pháp cơ bản:
file_object = open(file_name, mode)Trong đó, các chế độ (mode) truy cập phổ biến bao gồm:
- 'r' (Read): Mở file chỉ để đọc (chế độ mặc định). Lỗi sẽ xuất hiện nếu file không tồn tại.
- 'w' (Write): Mở file để ghi. Nếu file đã tồn tại, toàn bộ nội dung cũ sẽ bị ghi đè (Overwrite). Nếu file chưa có, Python sẽ tạo mới.
- 'a' (Append): Mở file để ghi nối tiếp vào cuối file. Nếu file chưa tồn tại, nó cũng sẽ được tạo mới.
- 'r+' / 'w+': Mở file cho cả hai thao tác đọc và ghi.
Cách thao tác truyền thống:
f = open("data.txt", "r")
content = f.read()
print(content)
f.close() # Rất quan trọng!Lưu ý: Việc quên gọi hàm f.close() có thể dẫn đến rò rỉ tài nguyên hệ thống hoặc làm mất dữ liệu chưa kịp ghi xuống đĩa.
2. Thao Tác Với File An Toàn Nhờ Câu Lệnh 'with'
Để khắc phục nguy cơ quên đóng file hoặc gặp lỗi trong quá trình xử lý làm chương trình bị ngắt giữa chừng, Python cung cấp cú pháp ngữ cảnh with (Context Manager). Khi dùng with, file sẽ tự động được đóng lại sau khi khối lệnh hoàn thành, ngay cả khi có ngoại lệ xảy ra.
with open("data.txt", "r") as f:
content = f.read()
print(content)
# File tự động đóng tại đây, không cần f.close()3. Các Phương Thức Đọc File Trong Python
Tùy thuộc vào kích thước tệp và mục đích xử lý, bạn có thể lựa chọn 3 cách đọc chính:
Đọc toàn bộ file với read()
Hàm read(size) trả về toàn bộ nội dung dưới dạng một chuỗi (string). Bạn cũng có thể truyền số lượng ký tự muốn đọc vào tham số size.
with open("sample.txt", "r") as f:
text = f.read()
print(text)Đọc từng dòng với readline()
Hàm readline() sẽ đọc duy nhất một dòng tại vị trí con trỏ hiện tại. Rất thích hợp khi làm việc với file dung lượng lớn.
with open("sample.txt", "r") as f:
line1 = f.readline()
line2 = f.readline()
print("Dòng 1:", line1.strip())
print("Dòng 2:", line2.strip())Đọc tất cả các dòng vào List với readlines() hoặc Vòng lặp
Hàm readlines() nạp toàn bộ các dòng vào một danh sách (list). Tuy nhiên, cách tối ưu bộ nhớ nhất để duyệt qua từng dòng của một file lớn là dùng vòng lặp trực tiếp trên đối tượng file:
# Cách 1: Duyệt trực tiếp (Khuyên dùng)
with open("sample.txt", "r") as f:
for line in f:
print(line.strip())
# Cách 2: Dùng readlines()
with open("sample.txt", "r") as f:
lines = f.readlines()
print(lines) # Trả về list các dòng4. Thao Tác Ghi File (Write & Append)
Để ghi dữ liệu xuống file, bạn sử dụng phương thức write(). Lưu ý rằng dữ liệu truyền vào write() phải ở dạng chuỗi (string).
Ghi đè nội dung ('w')
with open("output.txt", "w") as f:
f.write("Xin chào! Đây là dòng đầu tiên.\n")
f.write("Ghi đè sẽ xóa hết nội dung cũ nếu file đã tồn tại.\n")Ghi nối tiếp ('a')
with open("output.txt", "a") as f:
f.write("Dòng này sẽ được thêm vào cuối file.\n")5. Làm Việc Với File CSV Cơ Bản
CSV (Comma-Separated Values) là dạng file văn bản lưu trữ dữ liệu bảng rất thông dụng. Python hỗ trợ thư viện sẵn có csv để thao tác loại file này dễ dàng.
Đọc file CSV
import csv
with open("danh_sach.csv", mode="r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row) # Mỗi dòng là một list đại diện cho các cộtGhi file CSV
import csv
data = [
["Họ tên", "Tuổi", "Thành phố"],
["Nguyễn Văn A", 25, "Hà Nội"],
["Trần Thị B", 30, "TP.HCM"]
]
with open("nhan_vien.csv", mode="w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(data)6. Xóa File Với Module os
Nếu muốn xóa tệp tin khỏi đĩa cứng, bạn có thể kết hợp thư viện os để kiểm tra sự tồn tại trước khi tiến hành xóa:
import os
file_path = "test_delete.txt"
if os.path.exists(file_path):
os.remove(file_path)
print("Đã xóa file thành công!")
else:
print("File không tồn tại.")Kết Luận
Thao tác làm việc với file là kỹ năng nền tảng quan trọng giúp ứng dụng Python tương tác và lưu trữ dữ liệu thực tế. Việc sử dụng thành thạo câu lệnh with cùng các phương thức đọc/ghi đúng cách sẽ đảm bảo chương trình của bạn luôn an toàn, tối ưu hiệu năng và hạn chế tối đa các lỗi rò rỉ tài nguyên hệ thống.
Nguồn tham khảo
- Trần Lê Hùng Phi - Bài 8. Đọc/ghi file trong Python
- Xu Ly File CSV Trong Python | PDF
- Thao Tác Với File Trong Python - Viblo
- Đọc ghi file text trong lập trình python
- Tự động hóa công việc hàng ngày với Python
Nhận xét
Đăng nhận xét