Python 入门实践:写一个本地文件整理小工具,按类型自动归档
很多人都有同一个烦恼:下载文件夹越用越乱,安装包、图片、文档和压缩包混在一起,找文件要翻很久。其实不需要装整理软件,用 Python 标准库写一个几十行的小工具,就能按文件类型自动归档,而且每一步都看得见、改得动。
这个小工具的思路很简单。先列出目标文件夹里的文件,再根据扩展名判断它属于哪一类,然后把同类文件移到对应的子文件夹里。图片进“图片”,文档进“文档”,压缩包进“压缩包”,其余不认识的进“其他”,方便以后再分。
用 Python 3 自带的 pathlib 和 shutil 就够了,不用安装第三方库。pathlib 负责处理路径和扩展名,shutil.move 负责移动文件。这样写出来的脚本在 Linux、macOS 和 Windows 上都能跑,换电脑也不用重写。
核心逻辑只有三步。第一步,用 iterdir() 遍历文件夹,跳过子文件夹,只处理文件;第二步,用 suffix.lower() 取扩展名,在一张简单的映射表里查类别;第三步,如果目标子文件夹不存在就创建,再把文件移过去。映射表用字典写,改起来很直观,想加一种类型只要加一行。
from pathlib import Path
import shutil
RULES = {".jpg": "图片", ".png": "图片", ".pdf": "文档", ".txt": "文档", ".zip": "压缩包"}
def tidy(folder: Path, dry_run: bool = True):
for item in folder.iterdir():
if not item.is_file():
continue
target = folder / RULES.get(item.suffix.lower(), "其他")
print(f"{item.name} -> {target.name}/")
if not dry_run:
target.mkdir(exist_ok=True)
shutil.move(str(item), str(target / item.name))
if __name__ == "__main__":
tidy(Path.home() / "Downloads")
运行前先用演练模式看一遍结果,是个好习惯。上面代码默认只打印“会把哪个文件移到哪里”,不真正移动。确认映射没有写错,再把 dry_run 改成 False 正式执行。这样即使规则写错,也不会把文件弄乱。
写的时候还有几个细节值得注意。第一,遇到同名文件不要直接覆盖,可以在文件名后加序号,或者先跳过并打印提示;第二,正在下载的临时文件不要动,例如 .part 和 .crdownload,等下载完成再整理;第三,整理前先备份重要文件,脚本本身也要排除在外,避免把自己移走。
这个小工具还可以继续扩展。按修改日期再分一层子文件夹,适合整理照片;按文件大小列出最大的十个文件,适合清理磁盘;把每次移动记录写进日志,出了问题可以按记录找回。这些扩展都不需要新知识,都是在已有逻辑上加一个判断或一次输出。
对初学者来说,这个练习的价值不在代码量,而在完整流程:从一个真实的小麻烦出发,拆成列出、分类、移动三步,用标准库实现,再用演练模式验证,最后留出扩展空间。先让它在测试文件夹里跑通,再用到真实的下载文件夹,你会发现,写工具和用工具一样,都有成就感。
- 点赞
- 收藏
- 关注作者
评论(0)