pathlib Path函数的使用

Path 常用功能速查表

1. 创建 Path 对象

python 复制代码
from pathlib import Path

# 当前工作目录
p = Path.cwd()                    # WindowsPath('D:/my_project')

# 用户主目录
p = Path.home()                   # WindowsPath('C:/Users/Administrator')

# 字符串路径
p = Path("D:/data/video.mp4")     # WindowsPath('D:/data/video.mp4')

# 路径拼接(使用 / 运算符)
p = Path("D:/data") / "output" / "result.mp4"

2. 获取路径各部分

属性/方法 示例 (Path("D:/data/video.mp4")) 说明
.name 'video.mp4' 文件名(含后缀)
.stem 'video' 文件名(不含后缀)
.suffix '.mp4' 后缀名(含点)
.suffixes ['.mp4'] 所有后缀列表(如 .tar.gz 会返回两个)
.parent WindowsPath('D:/data') 父目录
.parents[0] WindowsPath('D:/data') 所有祖先目录(可索引)
.anchor 'D:\\' 盘符或根目录
.parts ('D:\\', 'data', 'video.mp4') 路径各部分元组

3. 路径检查和判断

方法 说明 示例
.exists() 路径是否存在 p.exists()
.is_file() 是否是文件 p.is_file()
.is_dir() 是否是目录 p.is_dir()
.is_absolute() 是否是绝对路径 p.is_absolute()
.resolve() 返回绝对路径(解析符号链接) p.resolve()
.absolute() 返回绝对路径(不解析符号链接) p.absolute()

4. 目录和文件操作

方法 说明 示例
.mkdir(parents=True, exist_ok=True) 创建目录(可递归创建父目录) Path("a/b/c").mkdir(parents=True)
.rmdir() 删除空目录 p.rmdir()
.unlink() 删除文件 p.unlink()
.rename(target) 重命名/移动 p.rename("new_name.mp4")
.iterdir() 遍历目录内容 for f in p.iterdir():
.glob("*.txt") 匹配文件(非递归) p.glob("*.py")
.rglob("*.txt") 递归匹配文件 p.rglob("**/*.py")

5. 文件读写

python 复制代码
# 读取文本(简洁)
content = Path("file.txt").read_text(encoding="utf-8")

# 写入文本
Path("out.txt").write_text("hello", encoding="utf-8")

# 传统方式(兼容性更好)
with Path("file.txt").open("r", encoding="utf-8") as f:
    content = f.read()
复制代码

6. 实用组合操作

python 复制代码
# 获取脚本所在目录(常用于定位项目根目录)
script_dir = Path(__file__).parent
project_root = Path(__file__).parents[1]      # 上两级

# 确保输出目录存在
output_path = Path("logs/2024/result.txt")
output_path.parent.mkdir(parents=True, exist_ok=True)

# 批量处理文件
for py_file in Path("src").rglob("*.py"):
    print(f"处理: {py_file.name}")
复制代码

os.path vs pathlib 对比

操作 旧式 (os.path) 新式 (pathlib)
拼接路径 os.path.join("a", "b") Path("a") / "b"
获取文件名 os.path.basename(p) Path(p).name
获取目录 os.path.dirname(p) Path(p).parent
获取后缀 os.path.splitext(p)[1] Path(p).suffix
检查存在 os.path.exists(p) Path(p).exists()

一句话总结

pathlib 从 Python 3.4 开始成为标准库,用面向对象的方式替代了繁琐的 os.path 操作,是 Python 3.4+ 推荐的文件路径处理方式 。核心用法:from pathlib import Path。

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
小羊没烦恼!4 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
俊昭喜喜里4 天前
java中的继承和多态的区别
java
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
未济4 天前
linux 配置环境变量
linux
傲世仙尊4 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
譕痕4 天前
JSONObject与JSONArray封装数据格式区别
java·json