Đổ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.
Để 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.
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ố!")
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!")
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!")
Đố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)
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:
Sao lưu dữ liệu (Backup): TẠO BẢN SAO thư mục trước khi chạy script.
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ế.
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}")
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!