os.path -- 常用路径操作

本文介绍了Python的os.path模块,包括分离路径与名称的os.path.dirname、os.path.basename和os.path.split,获取文件时间信息的os.path.getatime、os.path.getmtime和os.path.getctime,以及判断路径类型的os.path.isabs、os.path.isfile、os.path.isdir等函数。详细讲解了每个函数的用途和使用示例。
摘要由CSDN通过智能技术生成

os.path 库主要针对路径、文件名和目录名进行信息获取、信息整理、判断等等。共计 29 个函数和一个属性,将分成两部分介绍,第一部分只介绍比较常用的函数与唯一的属性,第二部分介绍较冷门的函数。

  • 系统类型: CentOS 8.2
  • python 版本: Python 3.6.8
唯一的属性
os.path.supports_unicode_filenames

在当前文件系统中,若允许使用任意 Unicode 字符串作为文件名,那么返回 True,否则返回 False

import os  # 在本文之后的代码段中,此行将省略

print(os.path.supports_unicode_filenames)
#True
分离路径与名称
os.path.dirname(path)

返回 参数路径 的路径部分,若 参数路径 指向一个文件,则返回文件所在的目录路径; 若 参数路径 指向一个目录,则返回此目录上层目录的路径。

  • 参数
    • path – 类路径对象,可以是表示路径的 strbytes 对象,还可以是实现了 os.PathLike 协议的对象
  • 返回值
    • str,目录路径,特殊情况下为空字符串
print(os.path.dirname('/project/test/test.py'))  # 指定到文件,绝对路径
#'/project/test'
print(os.path.dirname('/project/test/'))  # 指定到目录内,绝对路径
#'/project/test'
print(os.path.dirname('/project/test'))  # 指定到目录上,绝对路径
#'/project'
print(os.path.dirname('./test.py'))  # 指定到文件,相对路径
#'.'
print(os.path.dirname('./'))  # 指定到目录,相对路径
#'.'

测试完示例之后就会发现,此函数就是以 参数路径 中最后一个 \/ 为标识截取的字符串。

os.path.basename(path)

返回 参数路径 的基本文件名称,若 参数路径 指向一个文件,则返回文件名; 若 参数路径 指向一个目录,则返回最后一层目录名。

  • 参数
    • path – 类路径对象,可以是表示路径的 strbytes 对象,还可以是实现了 os.PathLike 协议的对象
  • 返回值
    • str,文件或目录名称. 特殊情况下为空字符串
print(os.path.basename('/project/test/test.py'))  # path 是一个文件(绝对路径)
#'test.py'
print(os.path.basename('/project/test/'))  # path 是一个目录,但路径后添加了 '\', 也就是说 path 指向的是目录内部
#''
print(os.path.basename('/project/test'))  # path 是一个目录(绝对路径)
#'test'
print(os.path.basename('./test.py'))  # path 是一个文件(相对路径)
#'test.py'
print(os.path.basename('./'))  # path 是执行目录(相对路径)
#''
print(os.path.basename('/project/test/tes.py'))  # 指向一个无效文件名
#'tes.py'

此函数可以获取路径中的目录名或者文件名,但是当路径指向目录内部并且没有指定目录内文件时,此函数将返回一个空字符串.

os.path.split(path)

参数路径 拆分为两部分,组合成一个元组,即 (目录, 文件名)

  • 参数
    • path – 类路径对象,可以是表示路径的 strbytes 对象,还可以是实现了 os.PathLike 协议的对象
  • 返回值
    • tuple(目录, 文件名)

其实此函数得到的结果相当于 dirname() 函数和 basename() 函数的组合:

print(os.path.split('/project/test/test.py'))
#('/project/test', 'test.py')
print((os.path.dirname('/project/test/test.py'), os.path.basename('/project/test/test.py')))
#('/project/test', 'test.py')

测试到这里,小编就感觉这三个函数不会就是用的截取字符串函数吧,然后小编就打开了源码,好家伙,直接好家伙,来看一眼 dirname() 函数的源代码:

# 备注内容都是小编自己加的
def dirname(p):
    """Returns the directory component of a pathname"""
    p = os.fspath(p)                # 可以先理解为传什么返回什么
    sep = _get_sep(p)               # 返回二进制的 '/' 或者普通的 '/'
    i = p.rfind(sep) + 1            # 找到最后一个 '/'
    head = p[
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值