【Python】os.path.dirname() 函数:获取文件路径中的目录部分

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() 适用于 同时获取目录和文件名

你可能感兴趣的:(Python基础,dirname,目录,os.path,path.dirname,os,python)