Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Đọc và ghi file văn bản trong Python

Python hỗ trợ xử lý file built-in, không cần thư viện ngoài. Có 2 loại file: Text file (chữ, đọc được) và Binary file (nhị phân: ảnh, exe, zip).

Các chế độ mở file (Mode)

ModeMô tảCon trỏTạo file mới?
'r'Đọc (read only)Đầu fileKhông (lỗi nếu không tồn tại)
'r+'Đọc và ghiĐầu fileKhông
'w'Ghi (write only) - ghi đèĐầu fileCó
'w+'Đọc và ghi - ghi đèĐầu fileCó
'a'Ghi thêm (append)Cuối fileCó
'a+'Đọc và ghi thêmCuối fileCó
'b'Binary mode (kết hợp: 'rb', 'wb', 'ab')--

Ghi file (Write)

# Mở file chế độ 'w' (tạo mới hoặc ghi đè)
file = open('sample.txt', 'w', encoding='utf-8')

# write(): ghi một chuỗi
file.write("Tôi là lập trình viên Python.\nTôi rất vui.")

# writelines(): ghi nhiều dòng từ iterable (không tự thêm \n)
lines = ['Dòng 1\n', 'Dòng 2\n', 'Dòng 3\n']
file.writelines(lines)

file.close()  # BẮT BUỘC đóng file

Best practice: dùng context manager with (tự động đóng file, an toàn exception):

with open('sample.txt', 'w', encoding='utf-8') as file:
    file.write("Dòng đầu tiên\n")
    file.write("Dòng thứ hai\n")

Đọc file (Read)

with open('sample.txt', 'r', encoding='utf-8') as file:
    # read(): đọc toàn bộ thành 1 string
    content = file.read()
    print(content)

    # readline(): đọc 1 dòng
    # file.seek(0)  # quay về đầu file
    # line = file.readline()

    # readlines(): đọc tất cả dòng thành list
    # file.seek(0)
    # lines = file.readlines()

Kết quả

Tôi là lập trình viên Python.
Tôi rất vui.

Đọc file lớn hiệu quả (line by line)

with open('large_file.log', 'r') as f:
    for line in f:  # iterator, không load hết vào RAM
        process(line)

Kết luận

Luôn dùng with open(...) as f: để quản lý tài nguyên tự động. Chỉ định encoding='utf-8' cho text file tiếng Việt. Dùng read() cho file nhỏ, loop line-by-line cho file lớn.