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()

一句话总结

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

相关推荐
promiseThen2 分钟前
5 分钟上手 Markdown:标题到表格、代码块与简历实战
前端
web66liang4 分钟前
webpack4+vue2项目使用 sass-embedded 导致的 DockerfIle 构建失败的问题
前端
Strayer6 分钟前
拓扑管网 3D 可视化大屏demo:科技感(地图 + 拓扑 + 3D 空间)
前端·three.js·数据可视化
葬送的代码人生9 分钟前
从 Vue 到 React:Tailwind CSS 布局 + BFF 代理实战
前端·react.js·架构
摸鱼老王不带815 分钟前
不用后端,纯前端读出"网站眼里你的真实出口 IP"——聊聊 Cloudflare 的 cdn-cgi/trace
前端
程序员黑豆25 分钟前
鸿蒙开发入门:Row 和 Column 布局组件详解
前端·harmonyos
VortMall39 分钟前
『平台去经营化』平台治理能力全新重构|VortMall微服务商城系统v1.3.10
java·大数据·微服务·商城系统·开源商城·vortmall·去经营化
hoLzwEge1 小时前
前端环境变量配置指南:.env 文件详解
前端·前端框架
吴声子夜歌1 小时前
Redis 3.x——集群故障转移
java·数据库·redis·集群
国服第二切图仔1 小时前
13其他工具 - Skill/LSP/Sleep等
linux·运维·里氏替换原则