Python 自动化整理下载文件夹:从一团乱麻到井井有条的实战教程

举报
yd_239489350 发表于 2026/11/04 11:43:28 2026/11/04
【摘要】 用 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)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。