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

相关推荐
tedcloud12314 小时前
UI-TARS-desktop部署教程:构建AI桌面自动化系统
服务器·前端·人工智能·ui·自动化·github
贫民窟的勇敢爷们17 小时前
SpringBoot整合AOP切面编程实战,实现日志统一记录+接口权限校验
java·spring boot·spring
UXbot17 小时前
AI原型设计工具如何支持团队协作与快速迭代
前端·交互·个人开发·ai编程·原型模式
AC赳赳老秦17 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主18 小时前
Java基础:list、set、map一遍过
java·开发语言
夏日听雨眠18 小时前
LInux(逻辑地址与物理地址的区别,文件描述符,lseek函数)
linux·运维·网络
灵犀学长18 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
ZC跨境爬虫18 小时前
跟着MDN学HTML_day_48:(Node接口)
前端·javascript·ui·html·音视频
好家伙VCC20 小时前
【无标题】
java
qq_5425154120 小时前
Ubuntu 22.04.4 LTS安装ToDesk最新版打不开,无响应?旧版本4.7.2_277版本分享
linux·ubuntu·todesk