os.path.dirname()
—— 获取文件路径中的目录部分
os.path.dirname()
是 Python os.path
模块中的一个函数,用于获取 文件路径的目录部分,即去掉文件名,返回 上级目录的路径。
1. 语法
import os
os.path.dirname(path)
参数
path
:文件或目录路径(可以是相对路径或绝对路径)。
返回值
- 返回去掉文件名后的路径(目录部分)。
- 如果
path
没有目录部分,则返回空字符串""
。
2. 示例
2.1 获取文件所在目录
import os
file_path = "/home/user/documents/report.docx"
directory = os.path.dirname(file_path)
print(directory) # 输出: /home/user/documents
📌 说明
/home/user/documents/report.docx
是完整的文件路径。dirname()
只保留/home/user/documents
(去掉了report.docx
)。
2.2 适用于相对路径
import os
file_path = "documents/report.docx"
directory = os.path.dirname(file_path)
print(directory) # 输出: documents
2.3 目录路径的情况
如果传入的是一个目录路径,os.path.dirname()
会返回上一级目录。
import os
dir_path = "/home/user/documents/"
directory = os.path.dirname(dir_path)
print(directory) # 输出: /home/user
📌 注意
- 目录路径最后有
/
时,它会去掉/
,再返回上一级目录。 - 如果目录本身就是
/
,则返回空字符串""
。
3. 结合 os.path.basename()
获取文件名
如果你同时需要 获取目录 和 文件名,可以结合 os.path.basename()
。
import os
file_path = "/home/user/documents/report.docx"
directory = os.path.dirname(file_path) # 获取目录部分
filename = os.path.basename(file_path) # 获取文件名
print(directory) # /home/user/documents
print(filename) # report.docx
4. os.path.dirname()
vs pathlib.Path.parent
Python 3.4+ 推荐使用 pathlib.Path.parent
,它比 os.path.dirname()
更直观。
from pathlib import Path
file_path = Path("/home/user/documents/report.docx")
print(file_path.parent) # /home/user/documents
📌 优点
- 可多级获取上级目录:
print(file_path.parent.parent) # /home/user
- 适用于所有平台(Windows/Linux)。
5. os.path.dirname()
vs os.path.split()
os.path.split()
一次性返回目录和文件名:
import os
path = "/home/user/documents/report.docx"
dir_name, file_name = os.path.split(path)
print(dir_name) # /home/user/documents
print(file_name) # report.docx
📌 区别
方法 | 返回值 | 适用场景 |
---|---|---|
os.path.dirname() | 目录部分 | 只需要获取目录 |
os.path.basename() | 文件名 | 只需要获取文件名 |
os.path.split() | (目录, 文件名) | 需要同时获取目录和文件 |
6. 总结
✅ os.path.dirname()
获取 目录部分,适用于提取 文件路径的目录。
✅ pathlib.Path.parent
是 Python 3.4+ 的更好选择。
✅ os.path.split()
适用于 同时获取目录和文件名。