自学编程第58课:自动整理下载文件夹——再也不用手动整理了
点击蓝字 关注我们



Tyree的电脑用了快两年,下载文件夹里攒了三百多个文件。有图片、有文档、有安装包、有压缩包,混在一起,想找个文件要翻半天。他试过手动整理,整理到一半就放弃了。
他说:“能不能让Python帮我整理?”
我说:“能。这节课就做这个。”
第58课,用Python自动整理文件夹——扫描文件,按类型分类,移到对应的子文件夹里。几秒钟,三百个文件归位。
1
准备知识:os 和 shutil
这节课我们要用到两个Python自带模块,不需要安装:
– `os`:操作文件和路径(列出文件、创建文件夹、获取文件路径)
– `shutil`:移动文件(把文件从一个位置搬到另一个位置)
import os
import shutil

os 模块:操作系统接口。
os模块提供了与操作系统交互的功能,比如操作文件路径、读取文件夹内容、判断文件类型等。它是 Python 自带的,不需要安装。
shutil 模块:文件操作。
shutil 是“shell utility”的缩写,提供了文件复制、移动、删除等高级操作。也是 Python 自带的。
换个简单的说法就是:
os 负责“问”系统:这个文件夹里有什么?这是什么文件?路径怎么拼?
shutil 负责“操作”文件:搬走它、复制它、删掉它。
2
第一步:列出下载文件夹里的所有文件
我们下面用来写脚本,找出文件来里的所有文件,代码如下

代码解释:
`os.listdir()` 返回一个列表,包含文件夹里所有内容的名称。
3
第二步:判断文件类型
在找出的文件里,按文件扩展名(后缀)分类,比如 `.jpg` 归到“图片”,`.docx` 归到“文档”。
先定义一个分类规则,然后,获取文件的扩展名,代码如下

代码解释:
`os.path.splitext()` 把文件名拆成“名字”和“扩展名”两部分,取索引1就是扩展名。
4
第三步:移动文件
把文件从下载文件夹移动到对应的分类子文件夹。也就是按类别归类,创建对应的文件夹并移动对应的类别文件到对应的文件夹里



上面最后一张图是运行后的效果,都按类别分类整理好了,
下面来看下代码解释:
`os.path.join(download_path, item)`:把文件夹路径和文件名拼成完整路径,自动处理斜杠问题。
`os.path.isdir(item_path)`:检查是不是文件夹。`True` 表示是文件夹,直接跳过不处理。
`os.makedirs(target_path)`:创建目标文件夹。如果文件夹已存在,`os.path.exists()` 会先检查,避免报错。
`shutil.move(item_path, target_path)`:把文件从原位置移动到目标文件夹。
不属于任何分类规则的文件,统一放入“其他”文件夹,避免留在根目录。
注意:移动文件是永久操作,如果目标文件夹已有同名文件,`shutil.move()` 会直接覆盖(不报错)。如果担心误操作,可以先用 `shutil.copy()` 复制文件而不是移动,确认无误后再改用 `shutil.move()`。
5
第四步:生成整理报告
我们整理完成后,需要打印一份“整理报告”,告诉我移动了多少文件:
代码如下

把上面脚本加在前面的佳代码后面,运行后就会有对应的整理报告给我们了
6
完整代码
我们把前面的02 03 04 05各代码整合在一起就是完整的脚本了。
7
课后小挑战
挑战1:把 `DOWNLOAD_PATH` 改成桌面路径,整理桌面上的文件。
挑战2:在 `CATEGORIES` 中增加你常用的文件类型(比如 `.py` 归到“代码”、`.psd` 归到“设计”)。
8
今天学到了什么
– `os.listdir()`:列出文件夹内容
– `os.path.isdir()`:判断是否为文件夹
– `os.path.splitext()`:获取文件扩展名
– `os.makedirs()`:创建文件夹
– `shutil.move()`:移动文件
好了,今天课程先到这里。
下一节课:
批量重命名照片——把相机拍的照片按日期和序号统一改名,让杂乱的照片变得整齐有序。
————热门推荐————
自学编程第51课:爬虫入门让Python帮你从网页“拿”数据
自学编程第一步:安装Python和Thonny 零基础图文教程
本系列教程持续更新,欢迎关注收藏

点赞
收藏
分享
夜雨聆风