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

相关推荐
ZJH__GO11 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
小小、码农11 小时前
Linux进程控制:从fork到exec,手写一个简易Shell
linux·运维·服务器
程序员黑豆11 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光12 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
To_OC12 小时前
别只拿 useRef 绑 DOM 了,搭配 Web Worker 解决页面卡顿才是真的香
前端·react.js·dom
不会就选b12 小时前
Linux之进程间通信(二)---模拟进程池
linux·运维·服务器
IT_陈寒13 小时前
Vue的响应式让我原地破防,原来问题出在这
前端·人工智能·后端
marvelyu13 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
子兮曰13 小时前
Bun vs Node.js 深度对决:跑分快 4 倍,真实业务只剩 3%,2026 年到底该怎么选?
前端·后端·typescript
计算机魔术师13 小时前
终端用户
前端