当前位置:首页>python>这个Python脚本帮我每天节省1小时,你还在手动整理文件吗?

这个Python脚本帮我每天节省1小时,你还在手动整理文件吗?

  • 2026-10-11 06:13:56
这个Python脚本帮我每天节省1小时,你还在手动整理文件吗?

这个Python脚本帮我每天节省1小时,你还在手动整理文件吗?

每天花1小时整理文件、重命名、归类?这个脚本只需要运行一次,之后自动完成。


问题:你的时间花在哪了?

你可能有过这样的经历:

  • 下载了一堆文件,散落在桌面各处
  • 每周花1小时整理,按类型分类、重命名
  • 想找一个文件,翻了半天还是找不到
  • 同样的事情,每周重复一遍

这不是你一个人的问题,这是90%办公族的时间黑洞。

我用了这个Python脚本之后,每天节省1小时,一年就是365小时。

365小时是什么概念?

  • 可以学会一门新技能
  • 可以读40本书
  • 可以陪伴家人一个暑假

先说结论:这个脚本能做什么

场景一:自动分类文件

你的下载文件夹:├── 发票.pdf├── 合同.docx├── 照片.jpg├── 发票(2).pdf├── 安装包.exe├── 笔记.md└── ...分类后:├── 📁 文档/│   ├── 合同.docx│   └── 笔记.md├── 📁 图片/│   └── 照片.jpg├── 📁 PDF/│   ├── 发票.pdf│   └── 发票(2).pdf└── 📁 安装包/    └── 安装包.exe

场景二:批量重命名

你的相册:├── DSC001.jpg├── DSC002.jpg├── IMG_20230101.jpg├── screenshot_001.png└── ...重命名后:├── 旅行-2023-01-01-01.jpg├── 旅行-2023-01-01-02.jpg├── 旅行-2023-01-01-03.jpg├── 工作-2023-06-15-截图1.png└── ...

场景三:自动备份

你的工作文件:├── 项目A/├── 项目B/└── ...自动备份到:├── 备份-2026-08-04/│   ├── 项目A/│   └── 项目B/└── 备份-2026-08-03/    ├── 项目A/    └── 项目B/

开始动手:写你的第一个自动化脚本

第一步:环境准备

需要安装的库:

pip install shutil pathlib os datetime

这些都是Python标准库,不需要额外安装。

第二步:基础分类脚本

这是最核心的脚本,按文件类型自动分类:

# auto_organize.pyimport shutilimport osfrom pathlib import Pathfrom datetime import datetime# 配置你的文件夹source_folder = Path("~/Downloads").expanduser()target_folder = Path("~/Organized").expanduser()# 文件类型映射FILE_TYPES = {# 文档类'.pdf': 'PDF文档','.doc': 'Word文档','.docx': 'Word文档','.xls': 'Excel表格','.xlsx': 'Excel表格','.ppt': 'PPT演示','.pptx': 'PPT演示','.md': 'Markdown','.txt': '文本文件',# 图片类'.jpg': '图片','.jpeg': '图片','.png': '图片','.gif': '图片','.bmp': '图片','.svg': '图片','.webp': '图片',# 视频类'.mp4': '视频','.avi': '视频','.mov': '视频','.mkv': '视频',# 音频类'.mp3': '音频','.wav': '音频','.flac': '音频',# 压缩包'.zip': '压缩包','.rar': '压缩包','.7z': '压缩包',# 安装包'.exe': '安装包','.dmg': '安装包','.apk': '安装包',}deforganize_files():# 创建目标文件夹(如果不存在)    target_folder.mkdir(parents=True, exist_ok=True)# 统计信息    stats = {}    moved_count = 0    skipped_count = 0# 遍历源文件夹for file in source_folder.iterdir():if file.is_file():            ext = file.suffix.lower()# 查找对应的文件夹类型if ext in FILE_TYPES:                folder_name = FILE_TYPES[ext]else:                folder_name = '其他文件'# 创建分类文件夹            category_folder = target_folder / folder_name            category_folder.mkdir(parents=True, exist_ok=True)# 生成目标文件名(避免重复)            target_path = category_folder / file.name            counter = 1while target_path.exists():                stem = file.stem                suffix = file.suffix                target_path = category_folder / f"{stem}_{counter}{suffix}"                counter += 1# 移动文件            shutil.move(str(file), str(target_path))            moved_count += 1# 统计            stats[folder_name] = stats.get(folder_name, 0) + 1# 输出报告    print(f"\n{'='*50}")    print(f"文件整理完成!")    print(f"{'='*50}")    print(f"总共移动: {moved_count} 个文件")    print(f"跳过: {skipped_count} 个文件")    print(f"\n分类统计:")for folder, count in sorted(stats.items(), key=lambda x: -x[1]):        print(f"  {folder}: {count} 个")    print(f"{'='*50}\n")if __name__ == "__main__":    organize_files()

使用方法:

# 运行脚本python auto_organize.py# 或者加入定时任务,每周自动运行

第三步:批量重命名脚本

这个脚本按日期和类型重命名文件:

# rename_files.pyimport osfrom pathlib import Pathfrom datetime import datetimeimport shutilsource_folder = Path("~/Photos").expanduser()target_folder = Path("~/Photos_Organized").expanduser()defrename_by_date():    target_folder.mkdir(parents=True, exist_ok=True)for file in source_folder.iterdir():if file.is_file():# 获取文件修改时间            mtime = file.stat().st_mtime            dt = datetime.fromtimestamp(mtime)            date_str = dt.strftime("%Y-%m-%d")# 生成新文件名            ext = file.suffix            new_name = f"{date_str}-{file.stem}{ext}"# 避免重名            counter = 1            final_name = new_namewhile (target_folder / final_name).exists():                final_name = f"{date_str}-{file.stem}_{counter}{ext}"                counter += 1# 移动并重命名            shutil.move(str(file), str(target_folder / final_name))            print(f"已重命名: {file.name} → {final_name}")if __name__ == "__main__":    rename_by_date()

第四步:自动备份脚本

# auto_backup.pyimport shutilfrom pathlib import Pathfrom datetime import datetimeimport ossource_folder = Path("~/Work").expanduser()backup_root = Path("~/Backups").expanduser()defcreate_backup():# 创建备份目录    date_str = datetime.now().strftime("%Y-%m-%d")    backup_folder = backup_root / f"backup-{date_str}"    backup_folder.mkdir(parents=True, exist_ok=True)# 复制文件    count = 0for item in source_folder.iterdir():if item.is_dir():# 复制整个目录            shutil.copytree(item, backup_folder / item.name)            count += 1elif item.is_file():# 复制单个文件            shutil.copy2(item, backup_folder / item.name)            count += 1    print(f"备份完成!共 {count} 个文件/文件夹")# 保留最近7天的备份    cleanup_old_backups(backup_root, keep_days=7)defcleanup_old_backups(backup_root, keep_days):"""清理过期的备份"""    now = datetime.now()for folder in backup_root.iterdir():if folder.is_dir() and folder.name.startswith("backup-"):# 获取备份日期try:                backup_date_str = folder.name.replace("backup-", "")                backup_date = datetime.strptime(backup_date_str, "%Y-%m-%d")                age_days = (now - backup_date).daysif age_days > keep_days:                    shutil.rmtree(folder)                    print(f"已删除过期备份: {folder.name}")except:passif __name__ == "__main__":    create_backup()

进阶:让脚本自动运行

方法一:定时任务(推荐)

Mac/Linux 用户:

编辑 crontab:

crontab -e

添加以下内容:

# 每天凌晨2点自动整理下载文件夹0 2 * * * /usr/bin/python3 /path/to/auto_organize.py# 每天凌晨3点自动备份工作目录0 3 * * * /usr/bin/python3 /path/to/auto_backup.py

Windows 用户:

使用任务计划程序:

  1. 按 Win + R,输入 taskschd.msc
  2. 创建基本任务
  3. 设置触发时间(如每天凌晨2点)
  4. 操作选择"启动程序"
  5. 程序填写:python.exe
  6. 参数填写:/path/to/auto_organize.py

方法二:文件监控(实时自动)

这个脚本会实时监控文件夹,有新文件时自动分类:

# monitor_folder.pyimport osimport timefrom pathlib import Pathimport shutilwatch_folder = Path("~/Downloads").expanduser()target_folder = Path("~/Organized").expanduser()# 文件类型映射(同前面)FILE_TYPES = {'.pdf': 'PDF文档','.doc': 'Word文档','.docx': 'Word文档','.jpg': '图片','.png': '图片','.mp4': '视频',# ... 更多类型}defprocess_new_files():"""处理新文件"""for file in watch_folder.iterdir():if file.is_file():            ext = file.suffix.lower()if ext in FILE_TYPES:                folder_name = FILE_TYPES[ext]                category_folder = target_folder / folder_name                category_folder.mkdir(parents=True, exist_ok=True)# 移动文件                shutil.move(str(file), str(category_folder / file.name))defmain():    print("开始监控文件夹...")    print(f"监控: {watch_folder}")    print(f"目标: {target_folder}")    print("按 Ctrl+C 停止监控\n")    last_check = set()try:whileTrue:            current_files = set(f.name for f in watch_folder.iterdir() if f.is_file())# 检测新文件            new_files = current_files - last_checkif new_files:                print(f"发现新文件: {new_files}")                process_new_files()            last_check = current_files            time.sleep(5)  # 每5秒检查一次except KeyboardInterrupt:        print("\n监控已停止")if __name__ == "__main__":    main()

实际效果对比

项目
手动操作
脚本自动化
整理100个文件
30-60分钟
5秒
重命名100张图片
15-30分钟
3秒
备份工作目录
20-40分钟
10秒
每周重复
2-3小时
0秒(自动)

一年节省时间:约100小时


常见问题解决

问题1:脚本运行报错

错误信息:PermissionError

解决方案:

# 给脚本执行权限chmod +x auto_organize.py# 或者用Python直接运行python auto_organize.py

问题2:文件移动失败

原因:目标文件夹权限问题

解决方案:

# 检查权限ls -la ~/Organized# 修改权限chmod 755 ~/Organized

问题3:同名文件被覆盖

原因:脚本没有处理重名情况

解决方案: 脚本已内置重名处理(自动添加数字后缀),确保目标路径正确即可。


下一步行动

今天就能做:

  1. ✅ 选择你想要自动化的场景(整理/重命名/备份)
  2. ✅ 复制对应的脚本代码
  3. ✅ 修改路径配置(source_folder、target_folder)
  4. ✅ 运行脚本测试效果

本周可以尝试:

  • 设置定时任务,让脚本每天自动运行
  • 结合多个脚本,实现完整自动化流程
  • 分享给同事,一起提升效率

总结

自动化不是玄学,本质上是把重复劳动交给机器。

一个脚本,每天节省1小时,一年就是365小时。

这365小时,你可以用来:

  • 学习新技能
  • 陪伴家人
  • 思考人生
  • 做任何更有价值的事

不要让你的时间,浪费在重复劳动上。


觉得有用?关注公众号「智思时代」,获取更多自动化提效技巧。

有问题欢迎留言,我逐一回复。

最新文章

随机文章