【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
CSDN 完整教程
> 系列:《从小白到 AI 大模型开发工程师的进阶之路》
> 技术点:AI-0124 目录与路径
> 主人公:小蓝伞
本文是第 36 期,围绕【pathlib、文件遍历、创建、复制、移动和删除风险】展开。示例用于复现实验;标注【建议验证】的部分需要按读者自己的 Windows、Python 版本和网络条件执行。
一、问题背景与适用场景
列出练习目录中的日志,确认清单后再移动到 archive 子目录。
本期要把概念落成一个可观察、可回滚的小实践。
二、先给结论
用 pathlib 处理路径,先 dry-run 展示清单,再执行移动或删除;任何批处理都必须限制允许的根目录。
本期最小产出:**文件整理工具**。
三、前置准备
-
Windows 10/11,建议 Python 3.11 或项目采用的兼容版本。
-
练习目录:`D:\ai-learning\issue-36`;涉及文件、依赖或配置时先备份。
-
不要提交 Token、密码和个人路径;未执行命令不得写成实测结果。
四、最小可复现实践
先执行 `Set-Location D:\ai-learning\issue-36` 进入练习目录,并在确认清单、备份和允许根目录后保存并执行:
```python
from pathlib import Path
def plan(root, allowed_root):
root = Path(root).resolve()
allowed_root = Path(allowed_root).resolve()
try:
root.relative_to(allowed_root)
except ValueError as exc:
raise ValueError('目标目录超出允许的根目录') from exc
return p for p in root.glob('\*.log') if p.is_file()
allowed_root = Path.cwd()
root = allowed_root / 'practice'
for source in plan(root, allowed_root):
print(f'计划移动:{source} -> {root / "archive" / source.name}')
建议验证:确认清单并备份后再执行 move
```
预期结果:dry-run 只打印计划,不改变文件;确认后才执行变更。
五、关键原理与工程判断
1. 先定义输入和成功判据
用 pathlib 处理路径,先 dry-run 展示清单,再执行移动或删除;任何批处理都必须限制允许的根目录。
2. 保留状态和失败原因
把输入、输出、版本、目录和完整错误记入 README 或日志,便于定位而不是只写【失败】。
3. 小步执行与回滚
先跑最小样例,再一次改一个变量;危险操作先 dry-run、备份或 Git 提交。
六、常见问题与避坑
-
**用字符串拼接路径;使用 Path 运算和 resolve,减少分隔符与相对路径错误。**
-
**对用户输入直接 rglob、移动或删除;先校验路径位于允许根目录并做 dry-run。**
-
**把目录当成文件判断;分别使用 exists、is_file、is_dir 并检查最终清单。**
七、验证清单
-
正常、边界、失败三类输入均有验证。
-
重新打开终端或进程后复验,排除缓存和当前会话影响。
-
产物能再次读取、运行或恢复;未实测部分标记【建议验证】。
八、面试题
-
**本期技术点解决什么问题?解决输入、状态或失败边界的可控性。**
-
**为什么先做最小实践?降低变量数量,区分语法、环境和业务问题。**
-
**出现错误先做什么?保存完整错误,确认版本、目录、权限和输入。**
-
**如何判断真正生效?重启相关进程后,用独立命令和功能测试复核。**
-
**什么时候不能照搬示例?系统、版本、权限或输入契约不同,就要先调整并阅读官方文档。**
九、本期小结与下一期
本期完成 文件整理工具,把正确路径和失败路径都变成可验证动作。下一期继续学习资料库中的下一个技术点。点个关注不迷路,跟着小蓝伞把 Python 基础变成工程能力。**可靠的程序也要能解释失败。**
官方资料
十、记录与回滚
建议记录时间、解释器版本、执行目录、关键输出和失败原因;出现异常先停止批量操作,保留现场后恢复备份或回退 Git。