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。