Python学习笔记(5):os.path模块

本文介绍了Python os.path模块的多个实用函数,包括获取绝对路径、分解路径、检查路径有效性等,帮助开发者更好地处理文件路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

os.path模块提供了一系列与文件路径和文件名有关的函数。接下来和大家分享一些比较常用的函数。

abspath

os.path.abspath(path)函数返回指定路径的绝对标准路径。
例如:

a = os.path.abspath('test.txt')
print a
b = os.path.abspath('.')
print b

上面一段代码的打印结果是:

/home/jackeyzhe/PycharmProjects/showMe/com/code001/test.txt
/home/jackeyzhe/PycharmProjects/showMe/com/code001

basename

os.path.basename(path)函数用于获取路径的basename,例如a = os.path.basename('/home/jackeyzhe/PycharmProjects/showMe/com/code001/test.txt')得到的a应为test.txt。
需要注意的是,这里的basename函数与Unix的basename程序有所不同,对于‘/home/jackeyzhe/PycharmProjects/showMe/com/code001/’Unix的basename程序返回的是‘code001’而该函数返回的是一个空字符串。

commonprefix

os.path.commonprefix(list)函数返回list中所有路径的最长的公共根目录(逐个字符判断)
例如代码

l = {'/home/jackeyzhe/PycharmProjects/showMe/com/code001/test.txt', '/home/jackeyzhe/examples.desktop', '/home'}
s = os.path.commonprefix(l)

返回的s为’/home’。该函数的返回值有可能是一个非法的路径,因为它是逐个字符比较。

dirname

os.path.dirname(path)函数返回路径的目录。
它与basename函数的返回值分别是split函数的返回值的两个元素。

path1 = '/home/jackeyzhe/PycharmProjects/showMe/com/code001/test.txt'
path2 = '/home/jackeyzhe/PycharmProjects/showMe/com/code001'

a1 = os.path.basename(path1)
b1 = os.path.basename(path2)

print a1
print b1

a2 = os.path.dirname(path1)
b2 = os.path.dirname(path2)

print a2
print b2

a = os.path.split(path1)
b = os.path.split(path2)

print a
print b

结果:

test.txt
code001
/home/jackeyzhe/PycharmProjects/showMe/com/code001
/home/jackeyzhe/PycharmProjects/showMe/com
('/home/jackeyzhe/PycharmProjects/showMe/com/code001', 'test.txt')
('/home/jackeyzhe/PycharmProjects/showMe/com', 'code001')

exists

os.path.exists(path)函数用于验证是否指定路径是否存在。如果返回True,表示存在;否则不存在。在有些平台中,如果路径无权限执行os.stat()函数,即使路径存在,exists函数仍会返回False。

expanduser

os.path.expanduser(path)函数可以将~或~user替换为用户工作路径。

expandvars

os.path.expandvars(path)函数可以替换路径中的环境变量。

getatime

os.path.getatime(path)函数返回路径的最后访问时间。

getmtime

os.path.getmtime(path)函数返回路径的最后修改时间。

getsize

os.path.getsize(path)函数返回指定路径的大小,单位为byte,如果路径不存在或不可访问,则抛出os.error异常。

isabs

os.path.isabs(path)函数用于判断是否是绝对路径,Unix的绝对路径以斜线开头,而Windows的绝对路径以反斜线开头。

isfile

os.path.isfile(path)函数用于判断指定路径是否是文件。

isdir

os.path.isdir(path)函数用于判断指定路径是否是目录。

os.path.islink(path)函数用于判断指定路径是否是符号链接。

normpath

os.path.normpath(path)函数返回标准路径,A//B, A/B/, A/./B 和 A/foo/../B都变成了A/B。

samefile

os.path.samefile(path1, path2)函数用于判断两个路径是否指向同一文件。

walk

os.path.walk(path, visit, arg)函数会逐个访问指定目录下的子目录,但符号链接不会被当做子目录进行访问。

os.pah模块的常用方法就是这些,想要熟悉这些方法,还要花时间进行大量的练习。

### Python 获取当前文件上级目录的绝对路径 为了获取当前文件上级目录的绝对路径,可以利用 `os.path` 模块中的多个函数来实现这一目标。具体来说: 通过组合使用 `os.path.abspath()` 和 `os.path.dirname()` 函数能够得到当前 `.py` 文件所在的目录的绝对路径[^3]。 对于更上一级目录,则可以在上述基础上再次调用 `os.path.dirname()` 来获得父级目录的路径[^2]。另外,也可以采用 `os.path.join()` 结合特殊字符串 `'..'` (即 `os.path.pardir`) 的方式达到相同的效果[^1]。 下面给出一段具体的代码示例用于展示如何获取当前文件所在目录及其上级目录的绝对路径: ```python import os current_file_path = os.path.abspath(__file__) print(f"Current file absolute path: {current_file_path}") parent_directory_of_current_file = os.path.dirname(current_file_path) print(f"Parent directory of current file: {parent_directory_of_current_file}") grand_parent_directory = os.path.dirname(parent_directory_of_current_file) print(f"Grand parent directory: {grand_parent_directory}") ``` 另一种方法是直接使用 `os.path.join()` 方法并传入 `'..'` 参数作为相对路径的一部分指向父级目录: ```python import os upper_level_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)) print(f"The upper level directory is: {upper_level_dir}") ``` 这两种方法都可以有效地帮助开发者定位到所需的工作空间位置,在处理跨平台项目时尤为有用[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值