登录
首页 >  文章 >  python教程

os与pathlib路径操作对比解析

时间:2026-01-29 09:14:35 491浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《os与pathlib路径操作对比详解》,以下内容主要包含等知识点,如果你正在学习或准备学习文章,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

推荐用pathlib:现代、直观、面向对象、跨平台;os.path仅适合维护老代码或极简环境。pathlib自3.4引入,支持运算符拼接、exists()判断、read_text()读写、glob()遍历等链式操作。

Python路径操作怎么做_os与pathlib对比讲解【教程】

Python路径操作推荐用 pathlib,它更直观、面向对象、跨平台性好;os.path 虽仍可用,但写法繁琐、易出错,适合维护老代码或极简环境。

pathlib:现代写法,链式调用很自然

从 Python 3.4 引入,Path 类把路径当对象处理,支持运算符(/)、属性访问和方法链式调用。

  • 拼接路径:Path("data") / "raw" / "file.txt" → 自动处理分隔符,不用写 os.path.join
  • 判断存在:Path("config.json").exists(),比 os.path.exists("config.json") 更直觉
  • 读写文件:Path("log.txt").read_text(encoding="utf-8").write_bytes(b"..."),省去 open/close
  • 遍历目录:[p for p in Path("src").glob("*.py") if p.is_file()],比 os.listdir + os.path.isfile 清晰得多

os.path:传统方案,函数式风格,兼容性高

适用于需支持 Python

  • 拼路径:os.path.join("home", "user", ".config") —— 注意顺序和开头斜杠问题
  • 取文件名:os.path.basename("/a/b/c.txt") → "c.txt",而 os.path.dirname 返回目录部分
  • 绝对化:os.path.abspath("data/../config.yaml"),但不自动展开 ~,需先用 os.path.expanduser
  • 注意陷阱:函数返回字符串,不做实际检查(如 os.path.isdir("missing") 返回 False,但不报错)

常见任务对照表(一目了然)

左边是 pathlib 写法,右边是等效的 os.path 写法:

  • 获取父目录: Path("a/b/c").parentos.path.dirname("a/b/c")
  • 扩展名: Path("x.tar.gz").suffixes → ['.tar', '.gz']os.path.splitext("x.tar.gz")[1](只能得最后一个)
  • 是否为绝对路径:Path("/tmp").is_absolute()os.path.isabs("/tmp")
  • 创建目录(含父级):Path("logs/error").mkdir(parents=True, exist_ok=True)os.makedirs("logs/error", exist_ok=True)

选哪个?看场景,不是非此即彼

新项目、脚本、数据处理一律用 pathlib;团队已有大量 os.path 代码,可逐步替换,不必强求统一;写工具库要考虑最低 Python 版本——若要支持 3.3 及以下,只能用 os.path 或引入 pathlib2 兼容包。

好了,本文到此结束,带大家了解了《os与pathlib路径操作对比解析》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>