Hướng dẫn xử lý tệp tin trong Python

1. Đọc tệp tin

Python cung cấp 4 phương thức đọc tệp tin chính, mỗi phương thức phù hợp với các trường hợp sử dụng khác nhau:

  • read(): Đọc toàn bộ nội dung tệp, phù hợp với tệp nhỏ.
  • read(size): Đọc size byte, hữu ích khi không biết kích thước tệp và muốn kiểm soát bộ nhớ.
  • readline(): Đọc từng dòng, giúp tránh lỗi tràn bộ nhớ do tệp lớn.
  • readlines(): Đọc tất cả dòng và trả về danh sách, tiện lợi cho tệp cấu hình.

Ví dụ sử dụng read():

with open('data.txt', encoding='utf-8') as file:
    content = file.read()
    print(content)

Ví dụ sử dụng read(size):

with open('data.txt', encoding='utf-8') as file:
    chunk = file.read(3)
    print(chunk, end='')

Ví dụ sử dụng readline():

with open('data.txt', encoding='utf-8') as file:
    line1 = file.readline()
    print(line1, end='')
    line2 = file.readline()
    print(line2, end='')
    line3 = file.readline()
    print(line3, end='')

Ví dụ sử dụng readlines():

with open('config.txt') as file:
    lines = file.readlines()
    for line in lines:
        print(line.strip())  # Xóa ký tự xuống dòng
    print(lines)

2. Ghi tệp tin

Các chế độ ghi phổ biến:

  • 'w': Chỉ ghi. Xóa nội dung cũ (nếu tệp tồn tại) hoặc tạo mới nếu chưa có. Ghi nhiều lần trên cùng đối tượng sẽ nối tiếp, không ghi đè.
  • 'a': Chỉ ghi. Tạo mới nếu chưa tồn tại, nếu có thì nối thêm vào cuối.
  • 'r+': Đọc và ghi. Nếu tệp không tồn tại, báo lỗi. Khi ghi, ghi đè lên nội dung cũ theo số ký tự. Ghi nhiều lần sẽ nối tiếp.
  • 'w+': Đọc và ghi. Xóa nội dung cũ hoặc tạo mới.
  • 'a+': Đọc và ghi. Nối thêm hoặc tạo mới nếu chưa tồn tại.

Ví dụ với chế độ 'w':

with open('data.txt', 'w') as file:
    count1 = file.write('hello')
    count2 = file.write('world')
print(count1, count2)

Ví dụ với chế độ 'w+':

text1 = "Hello, everyone. I'm a Python programmer. "
text2 = "If哈哈ffams"
with open("output.txt", "w+", encoding='utf-8') as file:
    file.write(text1)
    file.write(text2)
    file.seek(0)
    content = file.read()
    print(content)

Ví dụ với chế độ 'a+':

file = open('log.txt', 'a+')
file.seek(0)  # seek chỉ ảnh hưởng đến đọc
bytes_written = file.write('new data')
file.seek(0)
content = file.read()
print(content, end='')
file.close()

3. Lưu ý quan trọng

Đối với tệp nhị phân như ảnh, âm thanh, sử dụng các chế độ sau:

  • 'rb': Đọc dưới dạng nhị phân.
  • 'wb': Ghi dưới dạng nhị phân.
  • 'ab': Nối thêm dưới dạng nhị phân.

Các chế độ này sẽ được giải thích chi tiết trong các bài học về mạng.

Thẻ: python file-handling io read-write-modes

Đăng vào ngày 17 tháng 6 lúc 04:22