os.path.dirname()
—— 获取文件路径中的目录部分os.path.dirname()
是 Python os.path
模块中的一个函数,用于获取 文件路径的目录部分,即去掉文件名,返回 上级目录的路径。
import os
os.path.dirname(path)
path
:文件或目录路径(可以是相对路径或绝对路径)。path
没有目录部分,则返回空字符串 ""
。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
)。import os
file_path = "documents/report.docx"
directory = os.path.dirname(file_path)
print(directory) # 输出: documents
如果传入的是一个目录路径,os.path.dirname()
会返回上一级目录。
import os
dir_path = "/home/user/documents/"
directory = os.path.dirname(dir_path)
print(directory) # 输出: /home/user
注意
/
时,它会去掉 /
,再返回上一级目录。/
,则返回空字符串 ""
。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
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
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() |
(目录, 文件名) | 需要同时获取目录和文件 |
✅ os.path.dirname()
获取 目录部分,适用于提取 文件路径的目录。
✅ pathlib.Path.parent
是 Python 3.4+ 的更好选择。
✅ os.path.split()
适用于 同时获取目录和文件名。