Skip to main content

Bài 5 - Các Phương Thức Làm Việc với File trong Python

Python có thể làm việc với nhiều loại file khác nhau, chủ yếu được phân thành file văn bản (text)file nhị phân (binary). Các loại file cụ thể mà Python thường xuyên tương tác phụ thuộc vào ứng dụng và mục đích sử dụng.

Các Loại File Phổ Biến Python Thường Xử Lý

1. File Mã Nguồn Python (.py)

  • Là file cơ bản nhất, chứa mã lệnh Python.

2. File Văn Bản Thuần Túy (.txt)

  • Dùng để lưu trữ dữ liệu văn bản, file cấu hình hoặc log.
  • Xử lý bằng các hàm tích hợp như open(), read(), write().

3. File CSV (Comma-Separated Values) (.csv)

  • Định dạng phổ biến cho dữ liệu dạng bảng.
  • Xử lý bằng module csv hoặc thư viện pandas.

4. File JSON (JavaScript Object Notation) (.json)

  • Định dạng nhẹ để trao đổi dữ liệu, thường dùng cho cấu hình hoặc dữ liệu web.
  • Xử lý bằng module json.

5. File XML (Extensible Markup Language) (.xml)

  • Định dạng lưu trữ dữ liệu có cấu trúc phân cấp.
  • Xử lý bằng xml.etree.ElementTree.

6. File Excel (.xlsx, .xls)

  • Dữ liệu bảng trong Excel, xử lý bằng openpyxl hoặc pandas.

7. File Nhị Phân (Binary Files)

  • Bao gồm hình ảnh, âm thanh hoặc dữ liệu nhị phân tùy chỉnh.
  • Xử lý bằng các thư viện chuyên dụng hoặc thao tác trực tiếp với byte.

8. File Cấu Hình (.ini, .yml, .yaml)

  • Dùng cho cài đặt ứng dụng, phân tích cú pháp bằng configparser hoặc PyYAML.

Các Thư Viện Chính Để Xử Lý File

Hàm Tích Hợp Sẵn

  • open(), read(), write(), close().

Module Trong Thư Viện Chuẩn

  • csv, json, os, shutil, zipfile.

Thư Viện Bên Thứ Ba

  • pandas (phân tích dữ liệu, hỗ trợ CSV/Excel...)
  • openpyxl (làm việc với Excel)
  • Pillow (xử lý hình ảnh)

Python cung cấp nhiều công cụ mạnh mẽ để làm việc với các định dạng file khác nhau, giúp lập trình viên dễ dàng đọc, ghi và xử lý dữ liệu theo nhu cầu! 🚀

Các Bước Làm Việc với File

  1. Mở file (open())
  2. Đọc/Ghi dữ liệu (sử dụng các phương thức)
  3. Đóng file (close())

1. Mở File

file = open("ten_file.txt", mode="r")  # Mở file để đọc (read)

Các chế độ (mode) phổ biến:

  • "r" → Read (mặc định)
  • "w" → Write (ghi đè)
  • "a" → Append (thêm vào cuối)
  • "r+" → Đọc và ghi
  • "b" → Binary mode (vd: "rb", "wb")

Các Phương Thức Đọc File

1. Đọc toàn bộ file (read())

python

file = open("example.txt", "r") 

content = file.read()  # Đọc tất cả nội dung 

print(content) 

file.close()

2. Đọc từng dòng (readline())

file = open("example.txt", "r") 

line1 = file.readline()  # Đọc dòng đầu tiên 

line2 = file.readline()  # Đọc dòng tiếp theo 

print(line1, line2) file.close()

3. Đọc tất cả các dòng (readlines())

file = open("example.txt", "r") 

lines = file.readlines()  # Trả về list các dòng 

print(lines)  # Ví dụ: ['dòng 1\n', 'dòng 2\n'] file.close()

4. Duyệt file theo từng dòng (Khuyên dùng)

with open("example.txt", "r") as file:
   for line in file:
       print(line.strip())  # strip() để bỏ ký tự xuống dòng

Ưu điểm: Tự động đóng file khi thoát khối with.

Các Phương Thức Ghi File

1. Ghi đè file (write())

with open("output.txt", "w") as file:
   file.write("Xin chào Python!\n")
   file.write("Đây là dòng thứ hai.")

2. Ghi thêm vào cuối file (append mode)

with open("output.txt", "a") as file:
   file.write("\nThêm dòng mới vào cuối file.")

3. Ghi nhiều dòng (writelines())

lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
with open("output.txt", "w") as file:
   file.writelines(lines)

Các Phương Thức Quan Trọng Khác

Phương thứcMô tả
file.close()Đóng file (luôn dùng sau khi làm việc xong)
file.seek(offset)Di chuyển con trỏ file đến vị trí offset
file.tell()Trả về vị trí hiện tại của con trỏ file
file.flush()Đẩy dữ liệu từ bộ đệm xuống file ngay lập tức

Ví dụ sử dụng seek()tell():

with open("example.txt", "r+") as file:
   print("Vị trí ban đầu:", file.tell())  # Output: 0
   file.seek(10)  # Nhảy đến ký tự thứ 10
   print("Vị trí mới:", file.tell())  # Output: 10
   content = file.read(5)  # Đọc 5 ký tự từ vị trí hiện tại
   print(content)

Xử Lý File Binary

# Ghi file binary
with open("data.bin", "wb") as file:
   file.write(b"\x48\x65\x6C\x6C\x6F")  # Ghi chuỗi byte

# Đọc file binary
with open("data.bin", "rb") as file:
   data = file.read()
   print(data)  # Output: b'Hello'

Bài Tập Thực Hành

Bài 1: Đếm số từ trong file text.txt

with open("text.txt", "r") as file:
   content = file.read()
   word_count = len(content.split())
   print("Số từ:", word_count)

Bài 2: Sao chép nội dung file

with open("source.txt", "r") as src, open("dest.txt", "w") as dest:
   dest.write(src.read())

Bài 3: Ghi log hệ thống vào file

import datetime
with open("system_log.txt", "a") as file:
   file.write(f"{datetime.datetime.now()}: User logged in\n")

Lưu ý Quan Trọng

  1. Luôn đóng file sau khi dùng (hoặc sử dụng with).
  2. Kiểm tra file tồn tại trước khi đọc:

    import os
    if os.path.exists("file.txt"):
       # Xử lý file

  3. Xử lý ngoại lệ khi làm việc với file:

    try:
       with open("file.txt", "r") as file:
           content = file.read()
    except FileNotFoundError:
       print("File không tồn tại!")

Tổng Kết

  • Sử dụng open() với các mode phù hợp (r, w, a, ...).
  • Ưu tiên dùng with để tự động đóng file.
  • Các phương thức đọc: read(), readline(), readlines().
  • Các phương thức ghi: write(), writelines().

Áp dụng ngay để đọc/ghi dữ liệu trong các dự án thực tế! 🚀