Pathlib:把文件名和后缀作为结构来处理
直接通过字符串替换扩展名,可能误改父目录中的相同字符。路径对象提供文件名、后缀和父目录等结构化操作。
▶ 本文含视频讲解▶ 教学视频手动播放 · 英语讲解
Learn Python — Full Course for Beginners
Python 入门课程作为语法与编程背景复习;本文使用的较新标准库特性不保证在该课程中逐项覆盖。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。
播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。
问题从哪里出现
直接通过字符串替换扩展名,可能误改父目录中的相同字符。路径对象提供文件名、后缀和父目录等结构化操作。
理解核心机制
Path 的 / 运算符组合路径,with_suffix 替换最后一个后缀,suffixes 列出多个后缀。此类操作通常只改变路径表示,不会自动创建文件。
动手做一个小实验
Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。
from pathlib import Path
path = Path("reports") / "snapshot.tar.gz"
assert path.suffix == ".gz"
assert path.suffixes == [".tar", ".gz"]
print(path.with_suffix(".txt"))
print(path.parent, path.name)适用边界与常见误区
路径拼接不自动防止目录穿越。外部输入可能是绝对路径或包含 ..;涉及文件访问时,需要结合允许目录、符号链接及权限约束设计。
继续练习
分别尝试无后缀文件、隐藏文件和多重后缀,先写出预期的新名称,再检查 with_suffix 是否符合需求。