> 技术文档 > Python小工具实战:文件批量重命名工具(正则匹配模式)

Python小工具实战:文件批量重命名工具(正则匹配模式)

在这里插入图片描述

在这里插入图片描述

Python小工具实战:文件批量重命名工具(正则匹配模式)

Python小工具实战:文件批量重命名工具(正则匹配模式),本文介绍了用Python开发文件批量重命名工具(正则匹配模式)的教程。该工具支持选目标文件夹,用正则表达式匹配文件名,按自定义规则重命名,还能预览效果、记录日志。文中详述开发环境、实现思路,分步给出代码实现,包括导入库、创主窗口、实现文件夹选择等功能,并有使用示例和扩展方向,助读者掌握开发方法,可按需修改扩展以适配实际场景。

在这里插入图片描述

前言

    Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者,都将通过清晰的讲解、丰富的实例和实战项目,逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用(如数据分析、Web开发、自动化)以及面向对象高级特性,最终具备独立开发能力和解决复杂问题的思维,高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。

在这里插入图片描述


在这里插入图片描述

🥇 点击进入Python入门专栏,Python凭借简洁易读的语法,是零基础学习编程的理想选择。本专栏专为初学者设计,系统讲解Python核心基础:变量、数据类型、流程控制、函数、文件操作及常用库入门。通过清晰示例与实用小项目,助你快速掌握编程思维,打下坚实根基,迈出自动化办公、数据分析或Web开发的第一步。

🥇 点击进入Python小游戏实战专栏, 寓教于乐,用Python亲手打造经典小游戏!本专栏通过开发贪吃蛇、飞机大战、猜数字、简易版俄罗斯方块等趣味项目,在实践中掌握Python核心语法、面向对象编程、事件处理、图形界面(如Pygame)等关键技能,将枯燥的代码学习转化为可见的成果,让学习编程充满乐趣与成就感,快速提升实战能力。

🥇 点击进入Python小工具实战专栏,告别重复劳动,用Python打造效率神器!本专栏教你开发文件批量处理、自动邮件通知、简易爬虫、桌面提醒、密码生成器、天气查询等实用小工具。聚焦os、shutil、requests、smtplib、schedule等核心库,通过真实场景案例,快速掌握自动化脚本编写技巧,解放双手,显著提升工作与生活效率,让代码真正服务于你的日常。

🥇 点击进入Python爬虫实战专栏,解锁网络数据宝库!本专栏手把手教你使用Python核心库(如requests、BeautifulSoup、Scrapy)构建高效爬虫。从基础网页解析到动态页面抓取、数据存储(CSV/数据库)、反爬策略应对及IP代理使用,通过实战项目(如电商比价、新闻聚合、图片采集、舆情监控),掌握合法合规获取并利用网络数据的核心技能,让数据成为你的超能力。

🥇 点击进入Python项目实战专栏,告别碎片化学习,挑战真实项目!本专栏精选Web应用开发(Flask/Django)、数据分析可视化、自动化办公系统、简易爬虫框架、API接口开发等综合项目。通过需求分析、架构设计、编码实现、测试部署的全流程,深入掌握工程化开发、代码复用、调试排错与团队协作核心能力,积累高质量作品集,真正具备解决复杂问题的Python实战经验。


在日常工作和学习中,我们经常会遇到需要对大量文件进行重命名的情况。如果手动一个个修改,不仅耗时费力,还容易出错。这时,一个支持正则匹配模式的文件批量重命名工具就显得尤为重要。本文将详细介绍如何使用 Python 开发这样一款工具,让你轻松应对文件批量重命名的需求。

一、工具功能介绍

这款文件批量重命名工具(正则匹配模式)主要具备以下功能:

  • 支持选择目标文件夹,对该文件夹内的所有文件进行批量处理。

  • 可以使用正则表达式匹配文件原名称,实现灵活的匹配规则。

  • 能够根据自定义的命名规则对匹配到的文件进行重命名操作。

  • 提供预览功能,在执行重命名操作前,可以查看重命名后的效果,避免误操作。

  • 具备日志记录功能,记录重命名过程中的详细信息,方便后续查看和追溯。

二、开发环境

  • 操作系统:Windows 10、macOS 或 Linux(本文以 Windows 10 为例)

  • Python 版本:Python 3.8 及以上

  • 所需库:os、re、tkinter(用于图形界面开发)

三、实现思路

  1. 图形界面搭建:使用 tkinter 库创建一个简单直观的图形界面,包括文件夹选择按钮、正则表达式输入框、命名规则输入框、预览按钮、重命名按钮以及预览结果显示区域和日志显示区域。

  2. 文件夹选择功能:通过 tkinter 的文件选择对话框,让用户选择需要进行文件重命名的目标文件夹。

  3. 正则匹配功能:使用 re 库,根据用户输入的正则表达式,对目标文件夹内的文件名称进行匹配。

  4. 预览功能:根据用户输入的命名规则,对匹配到的文件生成新的名称,并在预览结果显示区域展示,让用户确认是否符合预期。

  5. 重命名功能:当用户确认预览结果无误后,执行重命名操作,将文件的原名称修改为新名称。

  6. 日志记录功能:在重命名过程中,记录每个文件的重命名情况,包括原名称、新名称以及是否重命名成功等信息,并在日志显示区域展示。

四、代码实现

(一)导入所需库

首先,我们需要导入开发过程中所需的库,包括 os、re 和 tkinter

import osimport reimport tkinter as tkfrom tkinter import filedialog, scrolledtext, messagebox

(二)创建主窗口

使用 tkinter 创建一个主窗口,并设置窗口的标题、大小和位置等属性。

class FileRenameTool: def __init__(self, root): self.root = root self.root.title(\"文件批量重命名工具(正则匹配模式)\") self.root.geometry(\"800x600\") self.root.resizable(True, True) # 初始化变量 self.folder_path = tk.StringVar() self.regex_pattern = tk.StringVar() self.rename_rule = tk.StringVar() self.file_list = [] # 存储文件信息的列表,每个元素是一个字典,包含原名称和新名称等信息 # 创建界面元素 self.create_widgets() def create_widgets(self): # 文件夹选择区域 folder_frame = tk.Frame(self.root) folder_frame.pack(pady=10, fill=tk.X, padx=10) tk.Label(folder_frame, text=\"目标文件夹:\").pack(side=tk.LEFT) tk.Entry(folder_frame, textvariable=self.folder_path, width=50).pack(side=tk.LEFT, padx=5) tk.Button(folder_frame, text=\"浏览\", command=self.select_folder).pack(side=tk.LEFT) # 正则表达式和命名规则输入区域 input_frame = tk.Frame(self.root) input_frame.pack(pady=10, fill=tk.X, padx=10) tk.Label(input_frame, text=\"正则表达式:\").pack(side=tk.LEFT) tk.Entry(input_frame, textvariable=self.regex_pattern, width=30).pack(side=tk.LEFT, padx=5) tk.Label(input_frame, text=\"命名规则:\").pack(side=tk.LEFT, padx=5) tk.Entry(input_frame, textvariable=self.rename_rule, width=30).pack(side=tk.LEFT, padx=5) # 按钮区域 button_frame = tk.Frame(self.root) button_frame.pack(pady=10) tk.Button(button_frame, text=\"预览\", command=self.preview_rename).pack(side=tk.LEFT, padx=10) tk.Button(button_frame, text=\"重命名\", command=self.perform_rename).pack(side=tk.LEFT, padx=10) # 预览结果显示区域 preview_frame = tk.Frame(self.root) preview_frame.pack(pady=10, fill=tk.BOTH, expand=True, padx=10) tk.Label(preview_frame, text=\"预览结果:\").pack(anchor=tk.W) self.preview_text = scrolledtext.ScrolledText(preview_frame, wrap=tk.WORD) self.preview_text.pack(fill=tk.BOTH, expand=True) # 日志显示区域 log_frame = tk.Frame(self.root) log_frame.pack(pady=10, fill=tk.BOTH, expand=True, padx=10) tk.Label(log_frame, text=\"日志信息:\").pack(anchor=tk.W) self.log_text = scrolledtext.ScrolledText(log_frame, wrap=tk.WORD, fg=\"blue\") self.log_text.pack(fill=tk.BOTH, expand=True)

(三)实现文件夹选择功能

通过 filedialog.askdirectory () 方法让用户选择目标文件夹,并将选择的文件夹路径显示在输入框中。

 def select_folder(self): folder = filedialog.askdirectory() if folder:  self.folder_path.set(folder)  self.log_text.insert(tk.END, f\"已选择目标文件夹:{folder}\\n\")

(四)实现预览功能

根据用户输入的正则表达式和命名规则,对目标文件夹内的文件进行匹配和新名称生成,并将结果显示在预览区域。

 def preview_rename(self): # 清空预览区域和文件列表 self.preview_text.delete(1.0, tk.END) self.file_list.clear() folder = self.folder_path.get() regex = self.regex_pattern.get() rule = self.rename_rule.get() if not folder:  messagebox.showerror(\"错误\", \"请选择目标文件夹\")  return if not regex:  messagebox.showerror(\"错误\", \"请输入正则表达式\")  return if not rule:  messagebox.showerror(\"错误\", \"请输入命名规则\")  return try:  # 编译正则表达式  pattern = re.compile(regex) except re.error as e:  messagebox.showerror(\"错误\", f\"正则表达式无效:{e}\")  return # 遍历目标文件夹内的文件 for file_name in os.listdir(folder):  file_path = os.path.join(folder, file_name)  if os.path.isfile(file_path):  # 使用正则表达式匹配文件名称  match = pattern.match(file_name)  if match:  # 根据命名规则生成新名称  new_name = pattern.sub(rule, file_name)  self.file_list.append({ \"old_path\": file_path, \"old_name\": file_name, \"new_name\": new_name, \"new_path\": os.path.join(folder, new_name)  })  self.preview_text.insert(tk.END, f\"{file_name} -> {new_name}\\n\") if not self.file_list:  self.preview_text.insert(tk.END, \"没有匹配到任何文件\")

(五)实现重命名功能

根据预览结果,对文件进行重命名操作,并记录日志信息。

 def perform_rename(self): if not self.file_list:  messagebox.showinfo(\"提示\", \"请先进行预览\")  return # 确认是否执行重命名操作 if not messagebox.askyesno(\"确认\", \"确定要执行重命名操作吗?\"):  return # 清空日志区域 self.log_text.delete(1.0, tk.END) success_count = 0 fail_count = 0 for file_info in self.file_list:  old_path = file_info[\"old_path\"]  new_path = file_info[\"new_path\"]  old_name = file_info[\"old_name\"]  new_name = file_info[\"new_name\"]  try:  # 执行重命名操作  os.rename(old_path, new_path)  self.log_text.insert(tk.END, f\"成功:{old_name} -> {new_name}\\n\")  success_count += 1  except Exception as e:  self.log_text.insert(tk.END, f\"失败:{old_name} -> {new_name},错误信息:{e}\\n\")  fail_count += 1 self.log_text.insert(tk.END, f\"\\n重命名完成,成功{success_count}个,失败{fail_count}个\\n\") messagebox.showinfo(\"完成\", f\"重命名完成,成功{success_count}个,失败{fail_count}个\")

(六)主程序入口

创建主窗口实例,并启动事件循环。

if __name__ == \"__main__\": root = tk.Tk() app = FileRenameTool(root) root.mainloop()

五、使用示例

(一)准备工作

假设有一个文件夹 “TEMP”,里面有以下文件:

  • image_001.jpg

  • image_002.jpg

  • image_003.jpg

  • image_004.jpg

  • image_005.jpg

  • test.jpg

  • test.txt

Python小工具实战:文件批量重命名工具(正则匹配模式)

我们想要将所有以 “image_” 开头的图片文件重命名为 “pic_001.jpg”、“pic_002.jpg”、“pic_003.jpg”、“pic_004.jpg”、“pic_005.jpg” 的形式。

(二)操作步骤

  1. 运行程序,打开文件批量重命名工具。
    Python小工具实战:文件批量重命名工具(正则匹配模式)

  2. 点击 “浏览” 按钮,选择 “TEMP” 文件夹。

  3. 在 “正则表达式” 输入框中输入 “image_(\\d+).jpg”,该正则表达式用于匹配以 “image_” 开头,后面跟数字,以 “.jpg” 结尾的文件。

  4. 在 “命名规则” 输入框中输入 “pic_\\1.jpg”,其中 “\\1” 表示正则表达式中匹配到的第一个分组(即数字部分)。

  5. 点击 “预览” 按钮,在预览结果区域可以看到:

  • image_001.jpg -> pic_001.jpg

  • image_002.jpg -> pic_002.jpg

  • image_004.jpg -> pic_004.jpg

  • image_005.jpg -> pic_005.jpg

  • image_003.jpg -> pic_003.jpg

Python小工具实战:文件批量重命名工具(正则匹配模式)

  1. 确认预览结果无误后,点击 “重命名” 按钮,在弹出的确认对话框中点击 “是”,程序将执行重命名操作。

  2. 重命名完成后,在日志信息区域可以看到重命名的结果,包括成功和失败的数量以及详细信息。

六、扩展方向

  1. 支持子文件夹:目前的工具只能对目标文件夹内的文件进行重命名,不支持子文件夹。可以扩展功能,让用户选择是否对所有子文件夹内的文件进行重命名。

  2. 添加更多命名规则选项:除了使用正则表达式的分组进行命名外,还可以添加按序号、日期等方式进行命名的选项。

  3. 支持文件过滤:可以添加文件类型过滤功能,让用户只对特定类型的文件进行重命名。

  4. 保存和加载配置:让用户可以保存常用的正则表达式和命名规则配置,方便下次使用时直接加载。

通过本文的介绍,相信你已经掌握了使用 Python 开发文件批量重命名工具(正则匹配模式)的方法。你可以根据自己的需求对代码进行修改和扩展,使其更加符合实际使用场景。希望这款工具能为你的工作和学习带来便利!

附录:扩展学习资源

  1. 官方资源
    • Python官网:https://www.python.org
    • PyPI:https://pypi.org(查找第三方库)
    • 安装包等相关文件(另附带pycharm工具),网盘下载地址:https://pan.quark.cn/s/649af731037c
    • 学习资料视频和文档资源,网盘下载地址: https://pan.quark.cn/s/ee16901a8954
  2. 本专栏特色资源
    • 代码资源仓库:CSDN专属资源在线获取
    • 海量Python教程:关注公众号:xcLeigh,获取网盘地址
    • 一对一答疑:添加微信与博主在线沟通(备注“Python专栏”

联系博主

    xcLeigh 博主全栈领域优质创作者,博客专家,目前,活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🏰 大屏可视化 🌀 带你体验酷炫大屏!

     💯 神秘个人简介 🌀 带你体验不一样得介绍!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!

     💦 :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://xcleigh.blog.csdn.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌