惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
Engineering at Meta
Engineering at Meta
美团技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 司徒正美
I
InfoQ
S
SegmentFault 最新的问题
博客园 - 叶小钗
N
Netflix TechBlog - Medium
Y
Y Combinator Blog
IT之家
IT之家
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
月光博客
月光博客
The Cloudflare Blog
U
Unit 42
GbyAI
GbyAI
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog

吖远zzyの博客

把吃灰五年的旧笔记本改成了NAS,翻车了但没完全翻 | 吖远zzyの博客 利用 Cloudflare Workers 免费搭建自己的短链服务 | 吖远zzyの博客 记录一下豆包视频去水印的研究过程,以及fallback_api加密数据qAAB开头数据的解密。 | 吖远zzyの博客 解决华为开发者工具 DevEco Studio 登录跳转 localhost:10101 端口被阻止问题 | 吖远zzyの博客 微信小程序个人资质审核血泪史:踩坑,从反复被拒到神奇过审 | 吖远zzyの博客 如何实现公众号自动回复或做一个短视频无水印解析机器人? | 吖远zzyの博客 以后在手机上用 Termux 和 GitHub Actions 更新 Hexo 博客 | 吖远zzyの博客 必备!这款万能小程序能给抖音/豆包视频图集去除水印、还有有趣的测反应、玩成语模拟工具。 自制的一些免费API接口第二弹(获取QQ昵称、头像、抖音/豆包视频去水印等...) 告别原生导航栏:微信小程序自定义导航栏完美适配方案 在安卓手机上运行OpenClaw?当然可以,用Termux折腾OpenClaw安装QQ机器人的踩坑记录... | 吖远zzyの博客 个人开发工具之抖音直播录制工具:一款功能强大的Android直播录制应用 UniApp中Canvas绘图的易错点与踩坑指南 QQ频道机器人与UniApp开发:常见踩坑点与解决方案 UniApp中Canvas绘图不显示的常见问题与解决方案 Hexo博客实现随机文章功能的完整教程 QQ频道机器人Android客户端使用指南 | 吖远zzyの博客 安卓版QQ频道机器人APP客户端插件开发指南 | 吖远zzyの博客 2024年AI编程助手深度评测:哪款最适合你? uni-app地图定位踩坑记:地图功能和定位的那些坑 uni-app文件上传踩坑记:图片处理和上传全攻略 uni-app表单验证踩坑记:这些坑我替你踩过了 uni-app开发踩坑记录:新手必看的常见问题与解决方案 uni-app安全防护指南:构建可靠的跨端应用 uni-app性能优化指南:从加载到渲染的全方位提升 uni-app动画效果实战:从基础到高级的动画实现指南 uni-app组件开发实战:从基础到进阶的最佳实践 uni-app网络请求与缓存策略:构建高效的数据层 uni-app状态管理进阶:Vuex最佳实践与性能优化 uni-app路由与页面跳转:最佳实践与踩坑指南
一个简单的脚本,治好了我的下载文件夹焦虑症 | 吖远zzyの博客
吖远zzy · 2026-08-30 · via 吖远zzyの博客
  1. 1. 事情是这样的
  2. 2. 需求很简单
  3. 3. 开工
  4. 4. 用起来什么感觉
  5. 5. 还能玩出什么花
  6. 6. 最后说两句

一个简单的脚本,治好了我的下载文件夹焦虑症 0 次阅读

事情是这样的

前两天想找个上周下载的发票,结果在下载文件夹里翻了半天。

满屏都是这玩意儿:

  • 新建文本文档 (3).txt
  • image_20260825_172341.png
  • 最终版_真的不改了_v7.pdf
  • 一堆乱码的压缩包.zip

我当场就破防了。

为了“效率至上”的信仰,连个下载文件夹都管不好,说出去都丢人。

于是决定花点时间,彻底解决这个问题。

需求很简单

我就想要一个脚本,每次运行的时候,自动把下载文件夹里的文件按类型分到不同子目录里:

  • 图片 → Pictures/
  • 文档(PDF、Word、Excel)→ Documents/
  • 压缩包 → Archives/
  • 安装包(exe、dmg)→ Installers/
  • 代码文件 → Codes/
  • 其他 → Others/

而且不能动那些还在下载中的临时文件(比如 .crdownload),别给人家整坏了。

开工

Python 写这种小脚本真的舒服。核心就三步:

  1. 遍历文件夹
  2. 根据扩展名判断类型
  3. 移动文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import os
import shutil

DOWNLOAD_DIR = os.path.expanduser("~/Downloads")

RULES = {
"Pictures": [".jpg", ".jpeg", ".png", ".gif", ".webp", ".bmp"],
"Documents": [".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".txt"],
"Archives": [".zip", ".rar", ".7z", ".tar", ".gz"],
"Installers": [".exe", ".msi", ".dmg", ".pkg"],
"Codes": [".py", ".js", ".html", ".css", ".cpp", ".c", ".go", ".rs"],
}

def get_category(filename):
ext = os.path.splitext(filename)[1].lower()
for category, exts in RULES.items():
if ext in exts:
return category
return "Others"

def organize():
for item in os.listdir(DOWNLOAD_DIR):
path = os.path.join(DOWNLOAD_DIR, item)
if os.path.isfile(path) and not item.startswith("."):
# 跳过未下载完的文件
if item.endswith(".crdownload") or item.endswith(".tmp"):
continue
category = get_category(item)
target_dir = os.path.join(DOWNLOAD_DIR, category)
os.makedirs(target_dir, exist_ok=True)
shutil.move(path, os.path.join(target_dir, item))
print(f" {item}{category}/")

if __name__ == "__main__":
organize()

就这么点代码,甚至没写注释(好孩子别学)。

用起来什么感觉

第一次运行的时候,看着终端里一行一行刷过去的文件名,有种“家里终于被保洁阿姨收拾干净”的爽感。

之后再下载东西,隔几天跑一次这个脚本,下载文件夹永远整整齐齐。

还可以把脚本顺手把它加到了 crontab 里,每周日凌晨自动跑一次,完全无感知。

1
0 3 * * 0 cd /path/to/script && python3 organize_downloads.py

现在的下载文件夹长期保持清爽,再也不怕别人借我电脑时看到那一堆“新建文件夹”了。

还能玩出什么花

如果你觉得光按扩展名分类太粗犷,还可以:

· 按日期建子文件夹(比如 2026-08/)
· 识别图片尺寸,把截图和壁纸分开
· 对 PDF 用 PyPDF2 读取标题,自动重命名
· 甚至识别文件 hash,自动去重

不过,够用就行。再复杂就变成一个项目了,为了整理文件再搭个数据库(笑)。

最后说两句

这个脚本总共就 40 来行,但解决了咱困扰的问题,兴趣爱好是最好的老师。

有时候不一定非要搞个大新闻,写点小东西让日常生活舒服一点点,也挺有成就感的。

如果你也有类似的需求,直接复制上面的代码,把 DOWNLOAD_DIR 改成你自己的路径就能用。

试试看,还你一个干净的下!载!文!件!夹!

感谢阅读,么么哒~