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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值