文件路径 #
一、os.path模块 #
python
import os
# 当前工作目录
os.getcwd()
# 路径拼接
os.path.join('folder', 'subfolder', 'file.txt')
# 路径分割
os.path.split('/path/to/file.txt')
# ('/path/to', 'file.txt')
# 分离扩展名
os.path.splitext('file.txt')
# ('file', '.txt')
# 获取文件名
os.path.basename('/path/to/file.txt') # 'file.txt'
# 获取目录名
os.path.dirname('/path/to/file.txt') # '/path/to'
# 绝对路径
os.path.abspath('file.txt')
# 规范化路径
os.path.normpath('/path/../to/./file.txt') # '/to/file.txt'
二、路径检查 #
python
import os
# 是否存在
os.path.exists('file.txt')
# 是文件
os.path.isfile('file.txt')
# 是目录
os.path.isdir('folder')
# 是绝对路径
os.path.isabs('/path/to/file')
# 是链接
os.path.islink('link')
三、pathlib模块(推荐) #
python
from pathlib import Path
# 创建Path对象
p = Path('folder/file.txt')
# 路径拼接
p = Path('folder') / 'subfolder' / 'file.txt'
# 属性
p.name # 'file.txt'
p.stem # 'file'
p.suffix # '.txt'
p.parent # Path('folder/subfolder')
# 方法
p.exists()
p.is_file()
p.is_dir()
p.resolve() # 绝对路径
# 读取文件
content = p.read_text()
p.write_text('content')
# 遍历目录
for file in Path('.').iterdir():
print(file)
# glob匹配
for file in Path('.').glob('*.txt'):
print(file)
四、相对路径与绝对路径 #
python
import os
from pathlib import Path
# 相对路径转绝对路径
abs_path = os.path.abspath('file.txt')
abs_path = Path('file.txt').resolve()
# 绝对路径转相对路径
rel_path = os.path.relpath('/path/to/file.txt', '/path')
rel_path = Path('/path/to/file.txt').relative_to('/path')
五、总结 #
| 操作 | os.path | pathlib |
|---|---|---|
| 拼接 | os.path.join() |
Path() / 'sub' |
| 文件名 | os.path.basename() |
p.name |
| 目录名 | os.path.dirname() |
p.parent |
| 扩展名 | os.path.splitext() |
p.suffix |
| 存在检查 | os.path.exists() |
p.exists() |
| 绝对路径 | os.path.abspath() |
p.resolve() |
最后更新:2026-03-16