1. 实际应用场景与痛点
场景
你是一名职场人或自由职业者,电脑里有很多杂乱的文件(如图片、文档、视频),命名方式五花八门(
"IMG_1234.jpg"、
"新建文本文档.txt"、
"视频1.mp4"),查找和管理非常困难。
你需要将它们按拍摄日期/创建日期、文件类型分类、序号递增的方式统一命名,方便归档和检索。
痛点
- 文件名混乱,难以查找
- 手动重命名耗时耗力
- 容易出错(覆盖文件)
- 缺乏自动化批量处理能力
2. 核心逻辑
1. 扫描目标文件夹,获取所有文件
2. 读取文件创建/修改日期(作为日期部分)
3. 根据扩展名分类(如
"image"、
"doc"、
"video")
4. 按日期+分类+序号生成新文件名
5. 批量重命名,避免冲突
6. 日志记录,方便回溯
3. 代码模块化设计
file_renamer/
│
├── main.py # 主程序入口
├── renamer.py # 重命名核心逻辑
├── utils.py # 辅助函数(日期、分类)
├── config.py # 配置文件
└── README.md # 使用说明
4. 代码实现(含详细注释)
"config.py"
# 配置参数
TARGET_DIR = "./files" # 目标文件夹路径
DATE_FORMAT = "%Y%m%d" # 日期格式
CATEGORY_MAP = {
".jpg": "image",
".png": "image",
".pdf": "doc",
".docx": "doc",
".mp4": "video",
".mov": "video"
}
"utils.py"
import os
from datetime import datetime
from config import DATE_FORMAT
def get_file_date(file_path):
"""
获取文件的修改时间作为日期
"""
timestamp = os.path.getmtime(file_path)
return datetime.fromtimestamp(timestamp).strftime(DATE_FORMAT)
def get_category(ext):
"""
根据扩展名返回分类
"""
return CATEGORY_MAP.get(ext.lower(), "other")
"renamer.py"
import os
from utils import get_file_date, get_category
from config import TARGET_DIR, DATE_FORMAT
def batch_rename():
"""
批量重命名文件
"""
if not os.path.exists(TARGET_DIR):
print(f"目录不存在: {TARGET_DIR}")
return
files = [f for f in os.listdir(TARGET_DIR) if os.path.isfile(os.path.join(TARGET_DIR, f))]
files.sort() # 按原顺序排序
for idx, old_name in enumerate(files, start=1):
ext = os.path.splitext(old_name)[1]
file_path = os.path.join(TARGET_DIR, old_name)
date_str = get_file_date(file_path)
category = get_category(ext)
new_name = f"{date_str}_{category}_{idx:03d}{ext}"
new_path = os.path.join(TARGET_DIR, new_name)
# 避免覆盖
counter = 1
while os.path.exists(new_path):
new_name = f"{date_str}_{category}_{idx:03d}_{counter}{ext}"
new_path = os.path.join(TARGET_DIR, new_name)
counter += 1
os.rename(file_path, new_path)
print(f"重命名: {old_name} -> {new_name}")
"main.py"
from renamer import batch_rename
def main():
print("=== 批量文件重命名工具 ===")
print("将按 日期_分类_序号 格式重命名文件")
input("按回车键开始...")
batch_rename()
print("✅ 重命名完成!")
if __name__ == "__main__":
main()
5. README.md
# 批量文件重命名工具
一个轻量级 Python 工具,按 日期+分类+序号 格式批量重命名文件,适合杂乱文件快速整理归档。
## 功能
- 按文件修改日期命名
- 按扩展名自动分类
- 序号递增,避免重复
- 日志记录重命名过程
## 安装
确保 Python 3.7+ 环境
bash
git clone <repo>
cd file_renamer
## 使用
1. 将要整理的文件放入 `./files` 目录
2. 运行:
bash
python main.py
3. 按回车开始重命名
## 配置
修改 `config.py` 可调整目标目录、日期格式、分类规则。
6. 使用说明
1. 将要整理的文件放入
"./files" 目录(或修改
"config.py" 中的路径)
2. 运行
"main.py"
3. 程序会按
"日期_分类_序号" 格式重命名文件
4. 同名文件会自动加后缀避免覆盖
7. 核心知识点卡片
知识点 说明
"os" 模块 文件遍历、重命名、路径操作
"datetime" 模块 获取和格式化文件日期
字典映射 扩展名到分类的映射
字符串格式化 生成新文件名
防冲突逻辑 检测并重命名避免覆盖
模块化设计 配置、逻辑、工具分离,易维护
8. 总结
这个工具解决了杂乱文件批量整理的痛点,适合职场人、摄影师、学生等需要管理大量文件的人群。
它的核心优势是简单、安全、可配置。
未来可以升级:
- 支持递归子目录
- 增加 GUI 界面
- 支持自定义命名规则
- 增加预览模式(不直接重命名)
如果你愿意,可以增加一个预览模式 + GUI 界面,让它在 Windows/macOS 上更易用。
利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!