news 2026/8/28 18:57:20

用 Python Tkinter 写了个高颜值批量文件重命名工具,核心是这套安全重命名算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 Python Tkinter 写了个高颜值批量文件重命名工具,核心是这套安全重命名算法

用 Python Tkinter 写了个 高颜值 批量文件重命名工具,核心是这套安全重命名算法

前言

平时整理下载文件夹、相机照片、项目文档,最烦的就是文件名乱糟糟:photo (1).jpg新建文档 2.docxIMG_20240801_235959.jpg……

市面上批量重命名工具不少,但要么界面老得像是上个时代的产品,要么一堆付费弹窗。于是我用 Python 标准库(Tkinter)手搓了一个:零第三方依赖、现代 UI、规则灵活,最关键的是——重命名永远不会把文件搞丢。已开源,文末有仓库地址。

界面长这样

左右分栏:左边实时预览原文件名 → 新文件名,右边管理重命名规则,底部一键执行。配色走紫罗兰 + 青色的现代路线(参考了 WorkBuddy 一类的质感)。

功能一览

功能说明
文件类型过滤图片 / 文档 / 视频 / 音频 / 压缩包一键筛选
8 种重命名规则查找替换、加前缀、加后缀、序号编号、删除区间、改扩展名、正则替换、大小写转换
规则组合多条规则按顺序依次执行,可增删改、上下移
规则导入导出规则集存成 JSON,下次直接复用
预览 + 冲突检测执行前先看效果,自动标出目标名冲突
一键撤销重命名错了?点一下全部恢复

技术亮点:安全重命名(这一步最容易翻车)

批量重命名的最大风险不是规则写错,而是重命名过程本身。最经典的坑:

  • 互换改名:想把a.txt改成b.txtb.txt改成a.txt。如果按顺序一个接一个改,第二次就撞名了;
  • 连环改名a → bb → c,顺序不对就失败;
  • 改名改到一半程序崩溃,文件名停在中间状态。

我的方案是临时名两步法(代码在br4.pyexecute_rename/_safe_rename):

第一步:所有文件 → 临时名(UUID 前缀,形如 .br_tmp_xxxx_原文件名) 第二步:所有临时名 → 目标名

这样做的好处:

  1. 任何时刻文件名互不冲突——临时名用的是 UUID,几乎不可能撞名,原目标名也被腾空了;
  2. 执行前把「原文件名 → 目标名」的映射存在内存里,某一步失败就逆序回滚_rollback_temps),文件不会停留在半改名状态;
  3. 撤销(undo_rename)就是反向执行一遍映射表,简单可靠。

此外还有两道校验:

  • Windows 非法字符< > : " / \ | ? *和 1-31 控制字符,改名后直接进不去系统,必须提前拦;
  • Windows 保留名CONPRNAUXNULCOM1~9LPT1~9——这些名字在 Windows 里是设备名,你永远创建不出一个叫CON.txt的文件,代码里提前给出警告。

规则引擎怎么设计

每条规则就是一个(规则类型, 参数字典)元组,按列表顺序执行,_apply_single_rule里用 if-elif 分发:

forrule_type,paramsinself.rules:ifrule_type=="regex":name=re.sub(params["pattern"],params["new"],name)elifrule_type=="prefix":name=params["text"]+name# ...

规则可以导出成 JSON(export_rules/import_rules),比如照片加水印式编号这套规则存下来,下次换个文件夹直接用。

扩展新规则也很容易:在RuleDialog里加一个类型 + 参数表单,在_apply_single_rule里加一个分支就完事。

怎么用

源码直接跑(只用 Python 标准库,无任何第三方依赖):

python br4.py

打包成单文件 exe(PyInstaller):

pipinstallpyinstaller pyinstaller br4.spec

产物就是dist/br4.exe,双击即用。

开源地址

  • 仓库:https://gitcode.com/2402_84199450/Batch_Rename
  • 协议:MIT
  • 代码里还保留了br1.py~br3.py的完整演进历史,从 4 月最初版到现在的重构版,想看一个工具怎么一步步长成这样的可以翻翻。

如果觉得有用,欢迎 Star 支持,也欢迎提 Issue 交流新规则的想法 😄

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 18:56:21

手把手教你本地部署 Dify

Dify 是一个开源项目&#xff0c;支持可视化编排 AI 工作流、RAG 管道&#xff0c;并集成了大量模型。最重要的是&#xff0c;自托管部署非常方便&#xff0c;只需几条命令。 准备工作 确保你已经具备&#xff1a; ✅ Docker Desktop 正常运行&#xff08;docker version 有 …

作者头像 李华
网站建设 2026/8/28 18:54:58

2篇2章1节:认识横断面研究和其流程

临床流行病学观察性研究体系包含多种经典设计类型,不同研究方法在时间维度、因果推断能力、应用场景上差异显著,直接决定科研设计的科学性与结果可信度。横断面研究作为临床实操中最常用、易落地的基础研究方案,凭借独特的时间同步性设计,广泛应用于疾病现状调研、人群特征…

作者头像 李华
网站建设 2026/8/28 18:51:12

豆包 LeetCode 11. 盛最多水的容器 C++实现

LeetCode 11. 盛最多水的容器 C 实现核心思路&#xff1a;双指针贪心&#xff0c;左右指针从两端向中间收缩&#xff0c;每次移动高度更小的指针&#xff0c;时间复杂度 O(n)&#xff0c;空间 O(1)。cpp #include <vector> #include <algorithm> using namespac…

作者头像 李华
网站建设 2026/8/28 18:50:39

道路缺陷与裂缝分割数据集 | 道路病害检测 裂缝识别 坑槽检测 实例分割

文章目录道路缺陷与裂缝分割数据集 | 道路病害检测 裂缝识别 坑槽检测 实例分割数据集概述X数据集核心信息数据三要素解析知识普及&#xff1a;道路病害视觉检测挑战快速开始&#xff08;代码示例&#xff09;标签道路缺陷与裂缝分割数据集 | 道路病害检测 裂缝识别 坑槽检测 实…

作者头像 李华
网站建设 2026/8/28 18:50:29

OpenAI Codex与API Key实操:避开那些“拼音级”开发坑

最近在科技圈刷到一个很有意思的话题&#xff1a;苹果和 OpenAI 之间的“窃密”风波被推上风口浪尖&#xff0c;消息一波接一波。但真正让我这个技术博主感兴趣的&#xff0c;不是双方谁说得对&#xff0c;也不是哪份文件更能证明什么&#xff0c;而是这场舆论里出现了一个非常…

作者头像 李华
网站建设 2026/8/28 18:49:11

AI时代“举国创新”落地:从算力、数据到安全合规的工程解读

AI时代&#xff0c;美国为什么也开始“举国创新”&#xff1f;这个问题这两年反复出现在技术社区的讨论里。很多人的第一反应是&#xff0c;这不过是一种政策叙事&#xff0c;听听就行。但实际上&#xff0c;如果你关注AI工程的落地环境&#xff0c;会发现不少变化已经开始影响…

作者头像 李华