Thao tác với tập tin trong Python

Đọc tập tin văn bản thuần

Giả sử có tập tin demo.txt với nội dung như sau:
hello
world

Đọc toàn bộ nội dung

with open('demo.txt', 'r', encoding='utf-8') as file:
    content = file.read()
    print(content)
Ở đây, chế độ 'r' là đọc (read-only), và tham số encoding='utf-8' đảm bảo xử lý đúng định dạng ký tự. Nếu tập tin không nằm cùng thư mục với script, cần cung cấp đường dẫn tuyệt đối.

Đọc từng dòng

with open('demo.txt', 'r', encoding='utf-8') as file:
    first_line = file.readline()   # Đọc dòng đầu tiên (kèm ký tự xuống dòng)
    second_line = file.readline()  # Đọc dòng tiếp theo
    print(first_line)
    print(second_line)

Duyệt qua từng dòng bằng vòng lặp

with open('demo.txt', 'r', encoding='utf-8') as file:
    for line in file:  # Tương đương file.readlines(), nhưng hiệu quả hơn về bộ nhớ
        print(line)    # Mỗi dòng bao gồm ký tự xuống dòng ở cuối

Ghi vào tập tin văn bản

Ghi một chuỗi văn bản

text = '''hello
world
'''
with open('demo2.txt', 'w', encoding='utf-8') as file:
    file.write(text)
Chế độ 'w' sẽ tạo mới tập tin nếu chưa tồn tại (thư mục chứa phải có sẵn), hoặc ghi đè toàn bộ nội dung nếu tập tin đã có.

Ghi danh sách các dòng

lines = ['hello\n', 'world\n']
with open('demo2.txt', 'w', encoding='utf-8') as file:
    file.writelines(lines)
Lưu ý: writelines() không tự động thêm ký tự xuống dòng — bạn phải chèn \n vào từng phần tử.

Quản lý tài nguyên với with

Cú pháp with open(...) đảm bảo tập tin được đóng tự động ngay cả khi xảy ra lỗi:
with open('demo.txt', 'r', encoding='utf-8') as f:
    data = f.read()
# Tập tin đã được đóng tại đây, không thể truy cập f nữa
print(data)

Đọc/ghi tập tin nhị phân

Để xử lý ảnh, âm thanh, hoặc dữ liệu nhị phân khác, dùng chế độ 'rb' (đọc nhị phân) và 'wb' (ghi nhị phân):
# Sao chép ảnh
with open('hua.jpg', 'rb') as src:
    binary_data = src.read()

with open('hua_copy.jpg', 'wb') as dst:
    dst.write(binary_data)
Khi làm việc với chế độ nhị phân, không cần và không được chỉ định encoding.

Các chế độ mở tập tin

Mô tả
rChỉ đọc (mặc định). Con trỏ ở đầu tập tin.
rbĐọc nhị phân. Dùng cho ảnh, video, v.v.
wGhi mới. Xóa nội dung cũ nếu tồn tại; tạo mới nếu chưa có.
wbGhi nhị phân mới.
aGhi nối (append). Con trỏ ở cuối tập tin.
abNối dữ liệu nhị phân.
r+Đọc và ghi. Con trỏ ở đầu.
rb+Đọc/ghi nhị phân.
w+Đọc/ghi, xóa nội dung cũ.
wb+Đọc/ghi nhị phân, xóa nội dung cũ.
a+Đọc và nối. Con trỏ ban đầu ở cuối.
ab+Đọc/nối nhị phân.
xTạo mới để ghi. Báo lỗi nếu tập tin đã tồn tại.
tChế độ văn bản (mặc định, thường không cần ghi rõ).

Lưu ý: Chế độ U (Universal newlines) đã bị loại bỏ từ Python 3.

Xử lý định dạng tập tin chuyên biệt

Python hỗ trợ đọc/ghi nhiều định dạng phổ biến thông qua thư viện chuẩn hoặc bên thứ ba:
  • INI: dùng configparser
  • CSV: dùng csv
  • Excel: dùng openpyxl hoặc pandas
  • JSON: dùng json
  • YAML: dùng thư viện PyYAML

Thẻ: python file-handling text-processing binary-files io

Đăng vào ngày 25 tháng 5 lúc 05:14