Python 入门实战:用 pathlib 与 argparse 写一个安全又好复用的文件整理小工具
很多 Python 初学者学完语法就卡在“不知道写什么”上。文件整理是一个很好的起点:需求真实、结果可见,又能把路径、命令行参数、异常处理这些基础串起来。本文的目标不是写一个功能最全的工具,而是写一个安全、可复用、敢给别人用的小脚本。
先定规则,再写代码
动手之前先回答三个问题。第一,整理哪些文件?只处理下载目录还是任意目录?第二,按什么分类?按扩展名分图片、文档、压缩包最直观。第三,遇到重名怎么办?直接覆盖是最危险的做法,宁可跳过并记录,也不要悄悄替换。把这三条写成注释,代码就不会越写越乱。
核心思路:四步走
第一步,用 pathlib 的 Path 处理路径,它比字符串拼接更清晰,也能跨平台处理分隔符。第二步,遍历目标目录,只处理文件,跳过子目录和隐藏文件,避免误删系统文件。第三步,根据扩展名查一张映射表,得到目标文件夹;没有命中的文件放进“其他”,不要丢弃。第四步,先做试运行,打印“将从哪里移到哪里”,确认无误后再真正移动。
用 argparse 做命令行
命令行参数用 argparse,比 sys.argv 更友好。至少提供三个参数:目标目录、是否真正执行、是否递归。默认只做试运行,是这个小工具最重要的安全设计。真正执行时再加 --apply,这样误操作也有一次反悔的机会。移动文件时用 shutil.move,遇到同名文件就加序号,例如 report(1).pdf,而不是覆盖。
from pathlib import Path
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("target", type=Path, help="要整理的目录")
parser.add_argument("--apply", action="store_true", help="真正执行移动,否则只做试运行")
args = parser.parse_args()
print(f"目标目录:{args.target},真正执行:{args.apply}")
错误处理要具体
目录不存在、没有读取权限、目标盘空间不足,都应该给出中文提示并正常退出,而不是直接抛出堆栈。建议把每一次移动写进日志:时间、原路径、新路径、是否成功。出了问题,日志就是最好的复盘材料。也可以加一个 --log 参数,把日志写到文件里,方便长期使用。
写完后做三组测试
第一组是空目录,程序应该安静退出,不报错也不新建一堆空文件夹。第二组是少量测试文件,检查分类是否正确、重名是否加序号。第三组是试运行与真正执行的结果对比,确认试运行没有改动任何文件。通过这三组测试,这个小工具就可以放心地用在自己的下载目录上了。
两个扩展练习
第一,支持按修改日期再分一层子目录;第二,把映射表放到 JSON 配置文件里,不改代码就能新增分类。完成之后,你会发现 pathlib、argparse、异常处理和日志不再是孤立的知识点,而是一套可以组合起来解决真实问题的方法。这正是入门阶段最值得建立的感觉:先把小工具做对、做安全,再谈功能多不多。
- 点赞
- 收藏
- 关注作者
评论(0)