Python 路径与文件 IO

pathlib.Path 提供面向对象路径操作;文本/字节读写配合上下文管理器与编码。

#type / concept #status / growing #tech / dev #resource / python #tech / lang / python

[!info] 关联笔记

Python 路径与文件 IO

这个概念为什么出现

字符串拼路径易错且跨平台脆。pathlib 把路径当对象;读写必须处理编码与资源关闭。

[!abstract] 一句话理解 用 Path 组合/查询路径,用 read_text/write_textopen 上下文做 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

结合场景再看三个关注点

  1. / 运算符拼路径。
  2. encoding 显式
  3. 大文件用流式迭代。

核心概念与准确模型

  • Path / PurePath
  • 文本 vs 字节 API
  • with path.open()
  • 权限与存在性检查竞态

边界情况与反直觉行为

  1. TOCTOU 检查后删除
  2. 换行符 通用换行模式
  3. 符号链接

常见误区

[!warning] 常见误区:到处 + "/" 拼路径 错误理解:字符串足够。
正确模型:Path 处理分隔与语义。

工程实践

  • 配置根目录注入
  • 临时文件用 tempfile
  • 原子写:写临时再 replace

本节总结

路径对象化 + 编码显式 + with 关闭,是文件 IO 的默认正确姿势。

自测题

  1. write_text 默认会怎样关于编码?
  2. 为何大文件不 read_text
参考答案
  1. 应显式传 encoding(避免平台默认差异)。
  2. 内存占用;应流式读。

延伸阅读与资料来源

资料类型支撑内容
pathlib文档路径
open文档打开文件
创建于 2026/7/15 更新于 2026/7/15