Python pathlib 入门:用路径对象整理文本笔记

举报
yd_263910519 发表于 2026/11/05 09:59:48 2026/11/05
【摘要】 通过创建练习目录、读取文本笔记和统计行数,理解 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。掌握路径对象、目录创建和读取之后,就可以把这个小例子改成统计日志或整理个人笔记的工具。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。