pathlib库 Focused Reading 0 Categories / 0 Tags / 1.1k Words
Python Note

pathlib库

pathlib库使用方法

2026.04.17 Updated 2026.04.20 1.1k Words

pathlib

pathlibPython 标准库(标准库说明无需额外安装)中用于处理文件路径和文件系统操作的模块。它用面向对象的方式来表示路径,相比传统的 os.path,代码更直观、可读性更好,也更适合日常开发。

Python 标准库指的是随 Python 解释器一起发布的模块,正常安装 Python 后就能直接 import,通常不需要再 pip install

例如,过去我们常这样拼接路径:

1
2
3
import os

path = os.path.join("data", "test.txt")

而用 pathlib 可以写成:

1
2
3
from pathlib import Path

path = Path("data") / "test.txt"

这种写法更自然,也更接近“路径”本身的语义。

基础使用

1. 创建路径对象

1
2
3
4
from pathlib import Path

p = Path("data/test.txt")
print(p)

Path 对象表示一个路径,但此时不一定要求这个文件真实存在。

2. 拼接路径

拼接路径一般使用/ 运算符.

1
2
3
4
5
from pathlib import Path

base = Path("data")
file_path = base / "images" / "cat.jpg"
print(file_path)

3. 获取当前目录和用户目录

比如我当前的工作目录是D:\code\cpp,而我的windows用户主目录是C:\Users\93723

1
2
3
4
from pathlib import Path

print(Path.cwd()) # 当前工作目录 会打印D:\code\cpp
print(Path.home()) # 用户主目录 会打印C:\Users\93723

4. 获取路径的常见属性

1
2
3
4
5
6
7
8
9
from pathlib import Path

p = Path("/home/user/test.txt")

print(p.name) # test.txt
print(p.stem) # test
print(p.suffix) # .txt
print(p.parent) # /home/user
print(p.parts) # ('/', 'home', 'user', 'test.txt')

常用属性说明:

  • name:文件名
  • stem:去掉扩展名后的文件名
  • suffix:扩展名
  • parent:父目录
  • parts:路径各部分组成的元组

进阶使用方法

1. 判断路径是否存在

1
2
3
4
5
6
7
from pathlib import Path

p = Path("demo.txt")

print(p.exists()) # 是否存在
print(p.is_file()) # 是否为文件
print(p.is_dir()) # 是否为目录

2. 遍历目录

遍历当前目录下所有内容:

1
2
3
4
from pathlib import Path

for item in Path(".").iterdir():
print(item)

只统计当前目录下的文件数量:

1
2
3
4
from pathlib import Path

count = sum(1 for p in Path(".").iterdir() if p.is_file())
print(count)

3. 查找文件

查找当前目录下所有 .py 文件:

1
2
3
4
from pathlib import Path

for p in Path(".").glob("*.py"):
print(p)

递归查找所有 .py 文件:

1
2
3
4
from pathlib import Path

for p in Path(".").rglob("*.py"):
print(p)

4. 读取和写入文件

读取文本文件:

1
2
3
4
from pathlib import Path

text = Path("a.txt").read_text(encoding="utf-8")
print(text)

写入文本文件:

1
2
3
from pathlib import Path

Path("a.txt").write_text("hello pathlib", encoding="utf-8")

读取二进制文件:

1
data = Path("a.bin").read_bytes()

写入二进制文件:

1
Path("a.bin").write_bytes(b"hello")

5. 创建目录和文件

创建目录:

1
2
3
from pathlib import Path

Path("output").mkdir()

递归创建目录:

1
2
3
from pathlib import Path

Path("a/b/c").mkdir(parents=True, exist_ok=True)

创建空文件:

1
2
3
from pathlib import Path

Path("demo.txt").touch()

6. 删除、重命名、移动

删除文件:

1
2
3
from pathlib import Path

Path("demo.txt").unlink()

删除空目录:

1
2
3
from pathlib import Path

Path("empty_dir").rmdir()

重命名或移动文件:

1
2
3
from pathlib import Path

Path("old.txt").rename("new.txt")

7. 获取绝对路径

1
2
3
4
from pathlib import Path

p = Path("demo.txt")
print(p.resolve())

resolve() 常用于把相对路径转换成绝对路径。

8. 获取相对路径

1
2
3
4
from pathlib import Path

p = Path("/home/user/project/data/test.txt")
print(p.relative_to("/home/user/project"))

输出:

1
data/test.txt

日常使用

下面这个例子会遍历某个目录下所有 .txt 文件,并打印文件名和大小:

1
2
3
4
5
6
from pathlib import Path

folder = Path("data")

for file in folder.glob("*.txt"):
print(f"文件名: {file.name}, 大小: {file.stat().st_size} 字节")

如果要递归统计整个目录下的文件数量:

1
2
3
4
from pathlib import Path

count = sum(1 for p in Path("data").rglob("*") if p.is_file())
print(count)

使用建议

在日常开发中,可以优先记住下面这些最常用的方法:

  • Path():创建路径对象
  • /:拼接路径
  • exists():判断是否存在
  • is_file() / is_dir():判断文件或目录
  • iterdir():遍历目录
  • glob() / rglob():查找文件
  • read_text() / write_text():读写文本
  • mkdir():创建目录
  • unlink():删除文件
  • resolve():获取绝对路径