Python 路径与文件 IO
pathlib.Path 提供面向对象路径操作;文本/字节读写配合上下文管理器与编码。
#type / concept
#status / growing
#tech / dev
#resource / python
#tech / lang / python
[!info] 关联笔记
Python 路径与文件 IO
这个概念为什么出现
字符串拼路径易错且跨平台脆。pathlib 把路径当对象;读写必须处理编码与资源关闭。
[!abstract] 一句话理解 用
Path组合/查询路径,用read_text/write_text或open上下文做 IO,并显式 encoding。
最小可运行示例
场景:导出对账文件到临时目录
# pathlib_export_demo.py
# 业务意图:写入 UTF-8 对账文件并读回。
# 教学点:Path;write_text;exists。
from pathlib import Path
def export_report(dir_path: Path, content: str) -> Path:
dir_path.mkdir(parents=True, exist_ok=True)
target = dir_path / "report.txt"
target.write_text(content, encoding="utf-8")
return target
def main() -> None:
path = export_report(Path("/tmp/py_report_demo"), "ok,金额,12\n")
print("path:", path)
print("exists:", path.exists())
print("body:", path.read_text(encoding="utf-8").strip())
if __name__ == "__main__":
main()
建议运行:
python pathlib_export_demo.py
期望输出:
path: /tmp/py_report_demo/report.txt
exists: True
body: ok,金额,12
结合场景再看三个关注点
/运算符拼路径。- encoding 显式。
- 大文件用流式迭代。
核心概念与准确模型
Path/PurePath- 文本 vs 字节 API
with path.open()- 权限与存在性检查竞态
边界情况与反直觉行为
- TOCTOU 检查后删除
- 换行符 通用换行模式
- 符号链接
常见误区
[!warning] 常见误区:到处
+ "/"拼路径 错误理解:字符串足够。
正确模型:Path 处理分隔与语义。
工程实践
- 配置根目录注入
- 临时文件用 tempfile
- 原子写:写临时再 replace
本节总结
路径对象化 + 编码显式 + with 关闭,是文件 IO 的默认正确姿势。
自测题
write_text默认会怎样关于编码?- 为何大文件不
read_text?
参考答案
- 应显式传 encoding(避免平台默认差异)。
- 内存占用;应流式读。
延伸阅读与资料来源
| 资料 | 类型 | 支撑内容 |
|---|---|---|
| pathlib | 文档 | 路径 |
| open | 文档 | 打开文件 |