使用 pathlib 统计目录中文本文件的大小
【摘要】 用 pathlib 遍历文本文件并读取字节大小,说明递归、符号链接与异常处理。
日常排查时,有时只想查看一个目录下的文本文件及其字节大小。Python 标准库的 pathlib 可以完成这件事,无需安装额外依赖。
一个可复现的小例子
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as directory:
root = Path(directory)
(root / "a.txt").write_text("abc", encoding="utf-8")
(root / "b.txt").write_text("hello", encoding="utf-8")
rows = sorted((p.name, p.stat().st_size) for p in root.glob("*.txt"))
print(rows)
本地运行输出:[('a.txt', 3), ('b.txt', 5)]。临时目录在上下文退出时自动清理,适合做无持久副作用的小实验。
使用时需要注意
glob("*.txt") 只匹配当前目录;需要递归时可使用 rglob("*.txt")。st_size 的单位是字节,而不是字符数:UTF-8 中文通常占多个字节。目录中也可能有名字以 .txt 结尾的目录,实际统计普通文件时可加 p.is_file(),并处理文件被删除、权限不足等 OSError。符号链接默认会被 stat() 跟随;如果要统计链接本身,应考虑 lstat() 并明确需求。
这个例子只检查文件元数据,不读取文件内容。对变化中的目录,遍历与读取元数据之间也可能发生竞态,生产脚本应按自身需要处理异常。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)