Chào các bạn trong diễn đàn,
Dạo này mình thấy nhiều bài chia sẻ về tự động hóa xử lý dữ liệu Excel bằng Python, hay quá nên mình cũng muốn góp vui một chút. Hôm nay mình muốn chia sẻ với mọi người một script Python nhỏ gọn mà mình vừa viết xong, giúp tự động đổi tên hàng loạt file Excel trong một thư mục theo một quy tắc nhất định.
Tình huống của mình là có một đống file Excel báo cáo theo ngày, ví dụ BaoCao_2023-10-26.xlsx, BaoCao_2023-10-27.xlsx, v.v. Mình muốn đổi hết thành dạng BC_26-10-2023.xlsx cho gọn và dễ nhìn hơn.
Đây là đoạn code mình dùng:
import os
import re
def rename_excel_files(folder_path):
for filename in os.listdir(folder_path):
if filename.endswith(".xlsx"):
old_path = os.path.join(folder_path, filename)
# Sử dụng regex để trích xuất ngày tháng năm
match = re.search(r"BaoCao_(\d{4})-(\d{2})-(\d{2})\.xlsx", filename)
if match:
year, month, day = match.groups()
new_filename = f"BC_{day}-{month}-{year}.xlsx"
new_path = os.path.join(folder_path, new_filename)
os.rename(old_path, new_path)
print(f"Đã đổi tên: {filename} -> {new_filename}")
# Thay 'duong_dan_thu_muc_cua_ban' bằng đường dẫn thực tế
folder_to_process = 'duong_dan_thu_muc_cua_ban'
rename_excel_files(folder_to_process)
Lưu ý:
- Các bạn cần thay
'duong_dan_thu_muc_cua_ban'bằng đường dẫn đến thư mục chứa file Excel của bạn. - Cấu trúc regex
r"BaoCao_(\d{4})-(\d{2})-(\d{2})\.xlsx"phải khớp với tên file gốc của bạn. Nếu tên file khác, bạn cần chỉnh sửa regex cho phù hợp. Ví dụ, nếu tên file làReport_26_10_2023.xlsxthì regex sẽ làr"Report_(\d{2})_(\d{2})_(\d{4})\.xlsx"và cách tạo tên mới cũng cần thay đổi. - Nên sao lưu dữ liệu trước khi chạy script để đảm bảo an toàn.
Script này rất hữu ích cho những ai thường xuyên phải làm việc với nhiều file Excel có tên gọi tương tự nhau. Hy vọng nó sẽ giúp ích cho công việc của mọi người!
Có bạn nào có cách nào hay hơn hoặc muốn tùy chỉnh thêm tính năng gì không, cùng thảo luận nhé!