Thao Tác Đọc Và Ghi File Trong Python: Hướng Dẫn Chi Tiết Từ A Đến Z

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.

Thao tác đọc và ghi file văn bản trong lập trình Python
Ảnh minh họa: Trần Lê Hùng Phi - Bài 8. Đọc/ghi file trong Python

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òng

4. 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ột

Ghi 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


📚 Chuỗi bài: Lộ Trình Học Python Toàn Diện: Từ Con Số 0 Đến Ứng Dụng Thực Tế

Chuỗi 20 bài viết hướng dẫn lập trình Python theo lộ trình bài bản, giúp người mới bắt đầu nắm vững cú pháp nền tảng, tư duy lập trình hướng đối tượng, làm việc với dữ liệu và xây dựng ứng dụng thực tế.

  1. 1. Lộ Trình Python #1: Cài Đặt Môi Trường Và Viết Chương Trình Đầu Tiên
  2. 2. Lộ Trình Python #2: Biến Và Kiểu Dữ Liệu Cơ Bản Trong Python
  3. 3. Các Toán Tử Trong Python Và Cách Sử Dụng Chi Tiết
  4. 4. Cấu Trúc Điều Kiện If-Else Và Tư Duy Cấu Trúc Rẽ Nhánh Trong Python
  5. 5. Vòng Lặp For Và While Trong Python: Tối Ưu Hóa Việc Lặp Lại Công Việc
  6. 6. Xử Lý Chuỗi (String) Tối Ưu Trong Python
  7. 7. Làm Chủ Cấu Trúc Dữ Liệu List Và Tuple Trong Python
  8. 8. Quản Lý Dữ Liệu Với Dictionary Và Set Trong Python
  9. 9. Xây Dựng Hàm (Function) Và Quản Lý Phạm Vi Biến Trong Python
  10. 10. Xử Lý Lỗi Và Ngoại Lệ Với Try-Except Trong Python
  11. 11. Thao Tác Đọc Và Ghi File Trong Python: Hướng Dẫn Chi Tiết Từ A Đến Z ← Bạn đang đọc
  12. 12. Quản Lý Module Và Package Trong Python: Từ Chia Nhỏ Mã Nguồn Đến Sử Dụng Pip
  13. 13. Lập Trình Hướng Đối Tượng (OOP): Class Và Object Cơ Bản Trong Python
  14. 14. Bốn Trụ Cột Cơ Bản Của OOP Trong Python: Đóng Gói, Kế Thừa, Đa Hình Và Trừu Tượng Hóa
  15. 15. Xử Lý Ngày Tháng Và Thời Gian Với Module Datetime Trong Python
  16. 16. Làm Việc Với Dữ Liệu Định Dạng JSON Vượt Trội Trong Python
  17. 17. Cơ Bản Về Crawl Dữ Liệu Web Với BeautifulSoup
  18. 18. Xử Lý Dữ Liệu Bảng Cơ Bản Với Pandas
  19. 19. Xây Dựng RESTful API Đơn Giản Với Flask
  20. 20. Dự Án Cuối Khóa: Tự Động Hóa Công Việc Hàng Ngày Với Python

← Bài trước: Xử Lý Lỗi Và Ngoại Lệ Với Try-Except Trong Python Bài tiếp theo: Quản Lý Module Và Package Trong Python: Từ Chia Nhỏ Mã Nguồn Đến Sử Dụng Pip →

Nhận xét