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

相关推荐
pe7er17 小时前
软件设计不要“既要又要”
前端·后端·架构
于先生吖17 小时前
前后端分离人事招聘项目,校招宣讲预约+社招双向撮合功能架构设计教程
java·开发语言·uni-app
user_admin_god17 小时前
Claude Code 安装与配置指南:兼容国产模型,禁止自动更新
java·人工智能
kyriewen17 小时前
从Webpack到Vite:我们迁移了一个10万行代码的项目,总结了这7个坑
前端·webpack·vite
IT_陈寒17 小时前
Java Stream并行流的坑:我花了3小时才找到的线程安全问题
前端·人工智能·后端
小新11017 小时前
最简单但完整的 Vue 响应式示例(一个简单的计数器按钮)
前端·javascript·vue.js
一只鹿鹿鹿17 小时前
网络安全评估方案
java·大数据·运维·物联网·web安全
码界索隆18 小时前
Python转Java系列:作者有话说
java·开发语言·python
一支帆18 小时前
微信小程序-情侣点餐
java·微信小程序·情侣点餐
kkk哥18 小时前
weixin121作品集展示微信小程序
java·mysql·微信小程序·ssm·b/s架构·作品集展示微信小程序