Đổi Tên Hàng Loạt File Bằng Python: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao

  • Home
  • Đổi Tên Hàng Loạt File Bằng Python: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao

Trong quá trình xử lý dữ liệu, quản lý tài liệu hoặc vận hành hệ thống, việc đổi tên hàng chục, hàng trăm file thủ công không chỉ tốn thời gian mà còn dễ dẫn đến sai sót. Với Python, bạn có thể tự động hóa công việc này chỉ trong vài dòng code ngắn gọn, chính xác và linh hoạt.

Bài viết này DC SoftTech sẽ hướng dẫn bạn cách đổi tên hàng loạt file bằng Python từ thao tác cơ bản đến các kịch bản thực tế nâng cao.

1. Thư Viện Cần Thiết Trong Python

Để làm việc với tệp và thư mục trong hệ thống, Python cung cấp hai thư viện sẵn có (built-in) cực kỳ mạnh mẽ mà bạn không cần cài đặt thêm:

  • os: Cung cấp hàm os.rename() và os.listdir() để thao tác trực tiếp với hệ điều hành.

  • pathlib: Thư viện hiện đại (xuất hiện từ Python 3.4+), hỗ trợ thao tác đường dẫn theo hướng đối tượng (OOP), giúp code dễ đọc và tối ưu hơn trên cả Windows, macOS lẫn Linux.

2. Các Kịch Bản Đổi Tên File Phổ Biến

Trường hợp 1: Thêm Tiền Tố (Prefix) Hoặc Hậu Tố (Suffix)

Kịch bản thường gặp khi bạn muốn đánh dấu trạng thái file (ví dụ: thêm draft_ hoặc _v1 vào tên file).

Python

from pathlib import Path

# Đường dẫn đến thư mục chứa file
folder_path = Path("./documents")

# Thêm tiền tố "backup_" vào tất cả các file .txt
for file_path in folder_path.glob("*.txt"):
    if file_path.is_file():
        new_name = f"backup_{file_path.name}"
        file_path.rename(folder_path / new_name)

print("Đã hoàn thành thêm tiền tố!")

Trường hợp 2: Đổi Tên Theo Số Thứ Tự (Batch Renaming with Index)

Phù hợp khi sắp xếp ảnh sản phẩm, hóa đơn hoặc dữ liệu đầu vào cho các mô hình AI/Machine Learning theo định dạng chuẩn như image_001.png, image_002.png.

Python

from pathlib import Path

folder_path = Path("./images")

# Lấy danh sách các file ảnh png
files = sorted([f for f in folder_path.glob("*.png") if f.is_file()])

for index, file_path in enumerate(files, start=1):
    # Định dạng số thứ tự có 3 chữ số (001, 002, ...)
    new_name = f"product_{index:03d}{file_path.suffix}"
    file_path.rename(folder_path / new_name)

print(f"Đã đổi tên {len(files)} file thành công!")

Trường hợp 3: Thay Thế Chuỗi Từ Khóa Trong Tên File

Dùng khi bạn muốn sửa lỗi chính tả hàng loạt hoặc thay đổi ký tự (ví dụ: đổi khoảng trắng thành dấu gạch dưới _).

Python

import os

folder_path = "./reports"

for filename in os.listdir(folder_path):
    old_file_path = os.path.join(folder_path, filename)
    
    if os.path.isfile(old_file_path):
        # Thay thế khoảng trắng bằng dấu gạch dưới
        new_filename = filename.replace(" ", "_").lower()
        new_file_path = os.path.join(folder_path, new_filename)
        
        os.rename(old_file_path, new_file_path)

print("Đã chuẩn hóa tên file thành công!")

Trường hợp 4: Nâng Cao – Dùng Biểu Thức Chính Quy (Regex)

Đối với các quy tắc phức tạp (ví dụ: trích xuất ngày tháng, xóa các ký tự đặc biệt), biểu thức chính quy re kết hợp với Python là giải pháp tối ưu.

Python

import re
from pathlib import Path

folder_path = Path("./data")
# Tìm các file có định dạng YYYY-MM-DD_name.csv
pattern = re.compile(r"^(\d{4})-(\d{2})-(\d{2})_(.*)\.csv$")

for file_path in folder_path.glob("*.csv"):
    match = pattern.match(file_path.name)
    if match:
        year, month, day, rest = match.groups()
        # Đổi sang định dạng DD-MM-YYYY_name.csv
        new_name = f"{day}-{month}-{year}_{rest}.csv"
        file_path.rename(folder_path / new_name)

3. Lưu Ý Quan Trọng Tránh Mất Dữ Liệu

Khi viết script tự động hóa thao tác tệp tin, hãy luôn tuân thủ các nguyên tắc an toàn sau:

  1. Sao lưu dữ liệu (Backup): TẠO BẢN SAO thư mục trước khi chạy script.

  2. Chế độ Dry-Run (Chạy thử): Thay vì dùng rename(), hãy dùng print() để kiểm tra tên cũ và tên mới trước khi thực thi thực tế.

  3. Xử lý ghi đè: Kiểm tra file trùng tên bằng new_path.exists() trước khi đổi tên để tránh vô tình ghi đè làm mất dữ liệu cũ.

Mẹo Dry-Run:

Python

# Thay vì: file_path.rename(new_path)
print(f"[DRY-RUN] {file_path.name}  --->  {new_name}")

Lời Kết

Việc tự động hóa đổi tên file bằng Python giúp tiết kiệm tối đa thời gian làm việc và tối ưu hóa quy trình xử lý dữ liệu cho doanh nghiệp. Hy vọng hướng dẫn từ DC SoftTech sẽ giúp bạn ứng dụng dễ dàng vào công việc thực tế.

Nếu bạn đang tìm kiếm các giải pháp tự động hóa quy trình (RPA), phát triển phần mềm theo yêu cầu hoặc tối ưu hóa hệ thống CNTT, hãy liên hệ ngay với DC SoftTech để nhận tư vấn chuyên sâu!

Categories:

Leave Comment