Python pathlib 入门:用路径对象整理文本笔记
处理文件时,初学者常用字符串拼接路径:目录后要不要加斜杠?换一台电脑还能用吗?Python 标准库的 pathlib 把路径表示成对象,让拼接、检查和读写集中在一起。下面用一个独立练习,整理目录里的文本笔记。
创建目录和示例文件
在空的练习目录中新建脚本并运行:
from pathlib import Path
notes = Path("pathlib_demo") / "notes"
notes.mkdir(parents=True, exist_ok=True)
sample = notes / "hello.txt"
if not sample.exists():
sample.write_text("第一行\n第二行\n", encoding="utf-8")
for file in sorted(notes.glob("*.txt")):
if file.is_file():
lines = file.read_text(encoding="utf-8").splitlines()
print(file.name, len(lines), "行")
首次运行会在当前工作目录下创建 pathlib_demo/notes 和示例文件,并输出“hello.txt 2 行”。再次运行不会覆盖已有的 hello.txt;如果自己放入其他 UTF-8 编码的 txt 文件,也会一起统计。
读懂路径操作
Path(“pathlib_demo”) 创建的是路径对象,斜杠运算符用于拼接子路径,并不会立刻创建目录。mkdir 的 parents=True 会按需创建缺失的父目录,exist_ok=True 则允许目标目录已经存在。若同名位置是普通文件,创建目录仍可能失败。
glob(“*.txt”) 查找 notes 目录下匹配的条目,不递归进入子目录;is_file() 过滤掉同名目录。read_text 指定 UTF-8 编码,splitlines 将文本拆为行。sorted 让输出顺序更容易比较,但文件数量很大时,逐个读取并排序会消耗时间和内存。
相对路径和常见边界
示例使用相对路径,它以运行程序时的当前工作目录为起点,不一定是脚本所在目录。想确认位置,可以打印 notes.resolve()。需要相对于脚本定位时,可从 Path(file).resolve().parent 出发。
文件可能不存在、编码不匹配或没有读取权限,实际工具应在合适的位置捕获 OSError、UnicodeError 并给出提示。exists() 只是某一时刻的检查,不能保证下一次操作时文件仍然存在。
练习结束后,在确认目录中没有需要保留的文件后,再手动删除 pathlib_demo。掌握路径对象、目录创建和读取之后,就可以把这个小例子改成统计日志或整理个人笔记的工具。
- 点赞
- 收藏
- 关注作者
评论(0)