Python实现文件名批量改名替换可通过多种方式实现,以下是核心思路和代码示例:
一、核心思路
-
文件筛选 :根据文件类型(如
.txt
、.jpg
)或关键词筛选目标文件。 -
新文件名生成 :支持添加前缀/后缀、替换特定字符或按顺序编号。
-
操作安全 :提供预览功能,避免覆盖现有文件。
二、代码实现
-
基础版本(添加前缀/后缀)
import os def batch_rename(folder_path, prefix='', suffix='', file_extension=None, preview=True): files = os.listdir(folder_path) for file in files: if file_extension and not file.endswith(file_extension): continue new_name = f"{prefix}{file}{suffix}{file_extension}" old_path = os.path.join(folder_path, file) new_path = os.path.join(folder_path, new_name) os.rename(old_path, new_path) if preview: print(f"Renaming: {old_path} -> {new_path}")
参数说明:
folder_path
为目标文件夹路径,prefix
和suffix
为添加的前后缀,file_extension
为筛选条件,preview
控制是否预览。 -
进阶版本(按时间戳重命名)
import os from datetime import datetime def time_based_rename(folder_path): files = os.listdir(folder_path) for file in files: if not file.endswith(('.txt', '.jpg')): continue timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') new_name = f"{timestamp}_{file}" old_path = os.path.join(folder_path, file) new_path = os.path.join(folder_path, new_name) os.rename(old_path, new_path)
适用场景:整理下载文件时按拍摄时间排序。
-
用户交互版本(GUI界面)
import os import tkinter as tk from tkinter import filedialog, messagebox def select_folder(): folder_path = filedialog.askdirectory() if folder_path: folder_entry.delete(0, tk.END) folder_entry.insert(0, folder_path) update_files_list(folder_path) def update_files_list(folder_path): files_listbox.delete(0, tk.END) for file in os.listdir(folder_path): files_listbox.insert(tk.END, file) def preview_rename(): prefix = prefix_entry.get() selected_files = files_listbox.get.curselection() if not selected_files: messagebox.showwarning("Warning", "Please select files to rename.") return for file in selected_files: new_name = f"{prefix}{file}" old_path = os.path.join(folder_path, file) new_path = os.path.join(folder_path, new_name) messagebox.showinfo("Preview", f"Renaming: {old_path} -> {new_path}") root = tk.Tk()