当前位置: 首页 > news >正文

工具分享02 | Python批量文件重命名工具

文章目录

  • 1. 运行流程
    • 1.1 工具面板
    • 1.2 选择原文件夹、目标文件夹,添加前缀并预览
    • 1.3 执行重命名操作
    • 1.4 重命名完成
    • 1.5 执行结果
    • 1.6 添加前缀及后缀
    • 1.7 替换部分名称
    • 1.8 前缀+后缀+替换
  • 2. 绘图
    • 2.1 框架结构布局
    • 2.2 添加菜单
    • 2.3 加载文件
    • 2.4 按规则执行重命名操作
    • 2.5 异常提示
  • 🏳️‍🌈 3. 更多可视化项目源码+数据

大家好,我是 👉 【Python当打之年(点击跳转)】

本期使用Python的Tkinter制作一个 批量修改文件名的工具,可以选择文件类型(.txt、.doc、.docx、.csv、.xlsx、.xls、.pdf’),可以自定义添加前缀、后缀及文件名字符替换(可单选、可多选)。希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。

1. 运行流程

1.1 工具面板

在这里插入图片描述

1.2 选择原文件夹、目标文件夹,添加前缀并预览

在这里插入图片描述

1.3 执行重命名操作

在这里插入图片描述

1.4 重命名完成

在这里插入图片描述

1.5 执行结果

在这里插入图片描述

1.6 添加前缀及后缀

在这里插入图片描述

执行结果
在这里插入图片描述

1.7 替换部分名称

在这里插入图片描述

执行结果
在这里插入图片描述

1.8 前缀+后缀+替换

在这里插入图片描述

执行结果
在这里插入图片描述

2. 绘图

2.1 框架结构布局

def create_widgets(self):# 文件夹选择部分folder_frame = ttk.LabelFrame(self.root, text="文件夹设置", style="Bold.TLabelframe")folder_frame.pack(fill="x", padx=10, pady=10, ipadx=5, ipady=5)# 源文件夹ttk.Label(folder_frame, text="源文件夹:").grid(row=0, column=0, sticky="w", padx=5, pady=5)self.source_var = tk.StringVar()source_entry = ttk.Entry(folder_frame, textvariable=self.source_var)source_entry.grid(row=0, column=1, sticky="we", padx=5, pady=5)ttk.Button(folder_frame, text="浏览...", command=self.select_source_folder).grid(row=0, column=2, padx=5, pady=5)# 目标文件夹ttk.Label(folder_frame, text="目标文件夹:").grid(row=1, column=0, sticky="w", padx=5, pady=5)self.dest_var = tk.StringVar()dest_entry = ttk.Entry(folder_frame, textvariable=self.dest_var)dest_entry.grid(row=1, column=1, sticky="we", padx=5, pady=5)ttk.Button(folder_frame, text="浏览...", command=self.select_dest_folder).grid(row=1, column=2, padx=5, pady=5)# 文件类型筛选部分ttk.Label(folder_frame, text="文件类型筛选:").grid(row=2, column=0, sticky="w", padx=5, pady=5)type_frame = ttk.Frame(folder_frame)type_frame.grid(row=2, column=1, columnspan=2, sticky="w", padx=5, pady=5)# 创建文件类型复选框self.type_vars = {}for i, ext in enumerate(self.file_types):self.type_vars[ext] = tk.BooleanVar(value=True) cb = ttk.Checkbutton(type_frame, text=ext, variable=self.type_vars[ext])cb.grid(row=0, column=i, padx=5, sticky="w")# 全选/取消全选按钮ttk.Button(type_frame, text="全选", command=lambda:self.toggle_all_types(True)).grid(row=0, column=len(self.file_types)+1, padx=5, sticky="w")ttk.Button(type_frame, text="取消全选", command=lambda:self.toggle_all_types(False)).grid(row=0, column=len(self.file_types)+2, padx=5, sticky="w")operation_frame = ttk.LabelFrame(self.root, text="重命名操作 (可多选)", style="Bold.TLabelframe")operation_frame.pack(fill="x", padx=10, pady=10, ipadx=5, ipady=5)# 创建垂直排列的操作框架vertical_frame = ttk.Frame(operation_frame)vertical_frame.pack(fill="x", padx=5, pady=5)# 前缀操作组 - 垂直排列prefix_frame = ttk.Frame(vertical_frame)prefix_frame.pack(fill="x", pady=5)# 前缀复选框prefix_check = ttk.Checkbutton(prefix_frame, text="添加前缀", variable=self.prefix_enabled)prefix_check.pack(side="left", padx=(0, 10))

2.2 添加菜单

def create_menu(self):"""创建菜单栏"""mainmenu = Menu(self.root)# 帮助菜单aboutmenu = tk.Menu(mainmenu, tearoff=False)aboutmenu.add_command(label="联系作者", command=self.about_command)mainmenu.add_cascade(label="帮助", menu=aboutmenu)

2.3 加载文件

def load_files(self):source = self.source_var.get()ifnotsource:returntry:self.files = []for f in os.listdir(source):file_path = os.path.join(source, f)if os.path.isfile(file_path):# 检查文件扩展名是否在选中的类型中ext = os.path.splitext(f)[1].lower()if ext inself.get_selected_types():self.files.append(f)self.status_var.set(f"找到 {len(self.files)} 个文件")except Exception as e:messagebox.showerror("错误", f"无法读取文件列表: {str(e)}")self.status_var.set("读取文件列表出错")

2.4 按规则执行重命名操作

def apply_rename_rules(self, filename):original = filename order = self.order_var.get()if order == "前缀→后缀→替换":ifself.prefix_enabled.get():prefix = self.prefix_var.get().strip()filename = prefix + filename if prefix else filenameifself.suffix_enabled.get():name, ext = os.path.splitext(filename)suffix = self.suffix_var.get().strip()filename = name + suffix + ext if suffix else filenameifself.replace_enabled.get():search = self.search_var.get().strip()replace = self.replace_var.get().strip()filename = filename.replace(search, replace) if search else filename

2.5 异常提示

def execute_rename(self):# 检查是否有至少一个操作被选中ifnot any([self.prefix_enabled.get(), self.suffix_enabled.get(), self.replace_enabled.get()]):messagebox.showwarning("警告", "请至少选择一种重命名操作")return# 获取当前选中的文件类型self.selected_types = self.get_selected_types()ifnotself.selected_types:messagebox.showwarning("警告", "请至少选择一种文件类型")returnsource = self.source_var.get()destination = self.dest_var.get()ifnotsource:messagebox.showwarning("警告", "请先选择源文件夹")returnifnotdestination:destination = source# 确认操作ifnot messagebox.askyesno("确认", "确定要执行重命名操作吗?"):return

🏳️‍🌈 3. 更多可视化项目源码+数据

点击跳转:【全部可视化项目源码+数据】


以上就是本期为大家整理的全部内容了,赶快练习起来吧,原创不易,喜欢的朋友可以点赞、收藏也可以分享注明出处)让更多人知道。

http://www.lryc.cn/news/598603.html

相关文章:

  • 电商接口什么意思?
  • 数据所有权与用益权分离:数字经济时代的权利博弈与“商业机遇”
  • Claude Code是如何做上下文工程的?
  • Maven Scope标签:解锁Java项目依赖管理的秘密武器
  • [嵌入式embed]ST官网-根据指定固件名下载固件库-STSWSTM32054[STM32F10x_StdPeriph_Lib_V3.5.0]
  • 使用maven-shade-plugin解决依赖版本冲突
  • RCLAMP0504S.TCT 升特半导体TVS二极管 无损传输+军工防护+纳米护甲 ESD防护芯片
  • 陕西地区特种作业操作证考试题库及答案(登高架设作业)
  • Product Hunt 每日热榜 | 2025-07-24
  • 2025年人形机器人动捕技术研讨会于7月31日在京召开
  • 火语言 RPA 在日常运维中的实践
  • ESP32使用 vscode IDF 创建项目到烧录运行全过程
  • 优选算法:移动零
  • 使用ffmpeg转码h265后mac默认播放器不支持问题
  • Mac电脑使用IDEA启动服务后,报service异常
  • 从零构建 Node20+pnpm+pm2 环境镜像:基于 Dockerfile 的两种方案及持久化配置指南
  • 开源Qwen凌晨暴击闭源Claude!刷新AI编程SOTA,支持1M上下文
  • Vue3实现视频播放弹窗组件,支持全屏播放,音量控制,进度条自定义样式,适配浏览器小窗播放,视频大小自适配,缓冲loading,代码复制即用
  • 合泰单片机怎么样
  • idea监控本地堆栈
  • Linux系统监控模块之Zabbix7添加监控主机
  • 生成式人工智能展望报告-欧盟-03-经济影响
  • 第一二章笔记
  • 同步时钟系统提升仓库自动化水平
  • Opentrons 模块化平台与AI技术助力智能移液创新,赋能AAW™自动化工作站
  • 爬虫逆向--Day12--DrissionPage案例分析【小某书评价数据某东评价数据】
  • 2025年区块链安全威胁全景:新兴漏洞、攻击向量与防护策略深度解析
  • 常见半导体的介电常数
  • gitlab使用 备份恢复 全量迁移
  • 期货交易系统界面功能与操作流程解析