Python 自动化整理下载文件夹:从一团乱麻到井井有条的实战教程
【摘要】 用 Python 按扩展名整理下载文件夹:分类规则、同名处理与演练模式齐全,先演练再执行,每周定时运行一次即可保持整洁。
一、问题:下载文件夹为什么总乱
浏览器默认把文件存进下载文件夹,安装包、图片、文档、压缩包混在一起,时间一长就找不到东西。手动整理费时间,还容易误删。这类规则固定、动作简单的重复劳动,最适合交给脚本。
本文写一个 Python 整理脚本:按扩展名分文件夹,同名文件自动改名,先演练、确认无误后再真正移动。
二、分类规则
- 图片:jpg、jpeg、png、gif、webp
- 文档:pdf、docx、txt、md、xlsx、pptx
- 压缩包:zip、rar、7z、tar、gz
- 音视频:mp3、wav、mp4、mov
- 安装包:exe、msi、dmg
- 其他:不在上表中的文件
规则可以按习惯调整,例如把 psd、ai 单独分出来。关键是规则写在代码里,而不是记在脑子里。
三、完整脚本
import argparse, logging, shutil
from pathlib import Path
CATEGORIES = {
"图片": {".jpg", ".jpeg", ".png", ".gif", ".webp"},
"文档": {".pdf", ".docx", ".txt", ".md", ".xlsx", ".pptx"},
"压缩包": {".zip", ".rar", ".7z", ".tar", ".gz"},
"音视频": {".mp3", ".wav", ".mp4", ".mov"},
"安装包": {".exe", ".msi", ".dmg"},
}
def get_category(p):
for name, suffixes in CATEGORIES.items():
if p.suffix.lower() in suffixes:
return name
return "其他"
def unique_path(t):
if not t.exists():
return t
n = 1
while True:
c = t.with_name(f"{t.stem}_{n}{t.suffix}")
if not c.exists():
return c
n += 1
def organize(folder, dry_run):
for item in folder.iterdir():
if not item.is_file() or item.name.startswith("."):
continue
dest = unique_path(folder / get_category(item) / item.name)
if dry_run:
logging.info("[演练] %s -> %s", item.name, dest)
else:
dest.parent.mkdir(parents=True, exist_ok=True)
shutil.move(str(item), str(dest))
logging.info("[移动] %s -> %s", item.name, dest)
if __name__ == "__main__":
ap = argparse.ArgumentParser()
ap.add_argument("folder")
ap.add_argument("--dry-run", action="store_true")
a = ap.parse_args()
logging.basicConfig(level=logging.INFO, format="%(message)s")
organize(Path(a.folder), a.dry_run)
四、三个关键点
第一,演练模式。--dry-run 只打印移动计划,不真正移动文件,第一次运行务必先看演练结果。
第二,同名处理。目标文件夹已有同名文件时,脚本在文件名后加 _1、_2,而不是直接覆盖,避免旧文件被顶掉。
第三,只处理文件。脚本跳过子文件夹和隐藏文件,避免打乱已有结构,也避免误动系统文件。
五、运行方法
先演练:
python organize.py ~/Downloads --dry-run
确认无误后再执行:
python organize.py ~/Downloads
想定期整理,可以用系统定时任务:Windows 用任务计划程序,macOS 和 Linux 用 cron。每周一次通常就够了,频率太高反而会在你还没打开刚下载的文件时就把它移走。
六、注意事项
整理前先备份重要文件,或先在复制的测试文件夹里跑一遍。不要把脚本指向系统文件夹、桌面根目录或代码仓库,它只适合下载文件夹这类临时堆放区。分类规则也要定期复盘:某类文件越来越多就单独建分类,长期为空的分类可以删掉。
结语
整理不需要复杂工具,关键是规则清晰、动作可逆、执行可预期。先演练、再执行、定期复盘,这套习惯同样适用于日志清理和截图归档。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)