在日常工作和学习中,我们经常会面临需要对一大批文件进行重命名的情况。手动一个个修改文件名的方式既费时又费力,因此,我们可以借助一些工具来实现文件的批量顺序连续重命名。今天,我们将介绍一个简单而实用的文件重命名工具,它基于Python和Tkinter库构建,具有友好的图形用户界面,使得文件重命名变得轻松愉快。
①如何使用
-
选择文件夹:点击“浏览”按钮,选择包含待重命名文件的文件夹路径。所选路径将显示在界面上。
-
设置参数:在界面中,你可以设置重命名的字符串(可为空)、起始索引和文件后缀(例如:.jpg)。这些参数将决定新文件名的形式。
-
点击重命名:设置好参数后,点击“重命名”按钮,程序将自动扫描所选文件夹中的文件,按照设定的规则进行顺序连续重命名。
②示例演示
-
假如路径"D:\MyDocumentation\公众号\小工具\修改文件名字\test"有如下6张jpg格式的图片:
-
我想设置为fruit1.jpg-fruit6.jpg,需要设置参数如下:
-
新文件名的形式。
-
如果我想设置为1.jpg-6.jpg的格式,则只需要把字符串置空即可,设置参数如下:
-
新文件名的形式。
③Python源码
import os
import tkinter as tk
from tkinter import filedialog
# 文件批量顺序、连续重命名工具
class FileRenamerApp:
def __init__(self, master):
self.master = master
self.master.title("文件批量顺序连续重命名工具")
self.path_var = tk.StringVar()
self.string_var = tk.StringVar()
self.i_var = tk.IntVar()
self.suff_var = tk.StringVar() # 新增变量用于存储文件后缀
self.create_widgets()
def create_widgets(self):
# 用于显示所选路径的标签
path_label = tk.Label(self.master, text="所选路径:")
path_label.grid(row=0, column=0, padx=10, pady=10, sticky=tk.W)
# 用于显示所选路径的输入框
path_entry = tk.Entry(self.master, textvariable=self.path_var, state="readonly", width=50)
path_entry.grid(row=0, column=1, padx=10, pady=10, sticky=tk.W)
# 用于选择路径的按钮
browse_button = tk.Button(self.master, text="浏览", command=self.select_path)
browse_button.grid(row=0, column=2, padx=10, pady=10, sticky=tk.W)
# 输入字符串的标签和输入框
string_label = tk.Label(self.master, text="字符串(可为空):")
string_label.grid(row=1, column=0, padx=10, pady=10, sticky=tk.W)
string_entry = tk.Entry(self.master, textvariable=self.string_var, width=20)
string_entry.grid(row=1, column=1, padx=10, pady=10, sticky=tk.W)
# 输入起始索引的标签和输入框
i_label = tk.Label(self.master, text="起始字符串(数字):")
i_label.grid(row=2, column=0, padx=10, pady=10, sticky=tk.W)
i_entry = tk.Entry(self.master, textvariable=self.i_var, width=10)
i_entry.grid(row=2, column=1, padx=10, pady=10, sticky=tk.W)
# 输入文件后缀的标签和输入框
suff_label = tk.Label(self.master, text="文件后缀(例.jpg):")
suff_label.grid(row=3, column=0, padx=10, pady=10, sticky=tk.W)
suff_entry = tk.Entry(self.master, textvariable=self.suff_var, width=10)
suff_entry.grid(row=3, column=1, padx=10, pady=10, sticky=tk.W)
# 执行重命名的按钮
rename_button = tk.Button(self.master, text="重命名", command=self.rename_files)
rename_button.grid(row=4, column=0, columnspan=3, padx=10, pady=10)
# 监听string_var的变化
self.string_var.trace_add("write", self.check_string)
# 用于显示输出结果的Text组件
self.result_text = tk.Text(self.master, height=3, width=60, state="disabled")
self.result_text.grid(row=5, column=0, columnspan=3, padx=10, pady=10)
def select_path(self):
selected_path = filedialog.askdirectory()
if selected_path:
self.path_var.set(selected_path)
def check_string(self, *args):
# 检查字符串是否为空,如果为空,设置默认值
if not self.string_var.get():
self.string_var.set("")
def rename_files(self):
path = self.path_var.get()
string = self.string_var.get()
i = self.i_var.get()
suff = self.suff_var.get() # 获取文件后缀
if path and suff: # 确保路径和文件后缀非空
filelist = os.listdir(path)
filelist.sort()
total_num = len(filelist)
success_count = 0
for item in filelist:
if item.endswith(suff):
src = os.path.join(path, item)
dst = os.path.join(os.path.abspath(path), f"{string}{i}{suff}")
try:
os.rename(src, dst)
i += 1
success_count += 1
except Exception as e:
print(e)
print('重命名目录失败\r\n')
result_message = f'共有 {total_num} 个文件需要重命名,成功转换 {success_count} 个文件'
self.result_text.configure(state="normal")
self.result_text.delete("1.0", tk.END)
self.result_text.insert(tk.END, result_message)
self.result_text.configure(state="disabled")
if __name__ == "__main__":
root = tk.Tk()
app = FileRenamerApp(root)
root.mainloop()
④生成的exe工具
关注微信公众号“MatpyMaster”,后台回复“文件重命名工具”,即可免费获取。
最后:
如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!