幽谷奇峰 | 燕雀鸣幽谷,鸿鹄掠奇峰

Python2标准库之os.path--公用路径操作模块


os.path 模块主要用来处理路径字符串,以提取出自己需要的信息。

1
>>> from os import path

分割与连接路径

os.path.split(path)

将路径分割成一对元组(head,tail),tail 是路径中最后一个斜杠后面的部分,而 head 是前面所有的部分。tail 部分不会包含斜杠;如果路径是以斜杠结尾,那么 tail 将为空串。如果路径中不包含斜杠,那么 head 为空。路径尾部的斜杠,除非代表的是根目录,否则 head 会将其去掉。

1
2
>>> path.split(pathstr)
('/home/user/archive', 'src.tar.gz')

os.path.basename(path)

提取路径中的文件名,相当于 split(path) 返回值的 tail

1
2
3
4
5
>>> pathstr='/home/user/archive/src.tar.gz'
>>> path.basename(pathstr)
src.tar.gz
>>> path.basename('/home/user/archive/')
''

os.path.dirname(path)

提取路径中的目录名,相当于 split(path) 返回值的 head

1
2
>>> path.dirname(pathstr)
'/home/user/archive'

os.path.splitdrive(path)

将路径分割成元组(drive,tail),drive 是盘符部分,在不用盘符的系统上,drive 始终为空串。drive + tail始终和path一样。

1
2
>>> path.splitdrive(pathstr)
('', '/home/user/archive/src.tar.gz')

os.path.splitext(path)

将路径分割成(root,ext)root + ext == path,ext 部分以点号开头且至多包含一个点号。如果路径部分就是一个以点号开头的文件名,那么 ext 为空串。

1
2
3
4
>>> path.splitext(pathstr)
('/home/user/archive/src.tar', '.gz')
>>> path.splitext('.bashrc')
('.bashrc', '')

os.path.join(path1[, path2[, ...]])

将一个或多个路径组分智能地连接起来。

1
2
3
4
5
6
>>> path.join('/home/user','archive','src.tar.gz')
'/home/user/archive/src.tar.gz'
>>> path.join('/home/user','archive','')
'/home/user/archive/'
>>> path.join('/home/user','archive')
'/home/user/archive'

os.path.commonprefix(list)

返回列表 list 中所有路径的最长相同首部,因为是逐个字符进行比较,所以可能得到的不是一个有效的路径。

1
2
>>> path.commonprefix(['/home/user/aabb.log','/home/user/abc.txt'])
'/home/user/a'

os.path.relpath(path[, start])

返回path对于当前工作目录或者start指定路径的相对路径。start的默认值就是os.curdir。仅适用于 Windows 和 Unix(Linux)。

1
2
>>> path.relpath(pathstr,'/home/user/doc')
'../archive/src.tar.gz'

对路径进行扩展和标准化处理

os.path.expanduser(path)

将路径中的 ~ 或者 ~user 扩展成用户的主目录。如果扩展失败,或是 path 不是以波浪线开头,那么 path 会被原样返回。

os.path.expandvars(path)

将路径中的环境变量($name${name})扩展成该变量自身的值。无效和异常的变量名不会被处理。在 Windows 系统下,还支持 %name% 的形式。

os.path.normcase(path)

对路径进行大小写标准化处理。在对大小写不敏感的文件系统上,将路径全部转换成小写。在 Unix(Linux) 和 Mac OS X 系统上,不作修改。在 Windows 系统下,将路径中的斜杠(/)全部转换成反斜杠(\)。

os.path.normpath(path)

对路径进行标准化处理。去掉路径中冗余的分隔符和表示相对路径的点号,例如,将A//B, A/B/, A/./BA/foo/../B 全部变成 A/B。在 Windows 系统下,将路径中的斜杠(/)全部转换成反斜杠(\)。

os.path.abspath(path)

返回将 path 标准化后的绝对路径,相当于 normpath(join(os.getcwd(), path))

查询及检测路径

os.path 还可以用于检测路径是否有效,以及查询文件的相关信息(metadata)。

注意:在使用以下函数前,需要先将路径中的波浪线和环境变量扩展开。

os.path.getatime(path)

获取文件的最后访问时间。如果文件不存在或不可访问,抛出 os.error 异常。

os.path.getmtime(path)

获取文件的最后修改时间。如果文件不存在或不可访问,抛出 os.error 异常。

os.path.getctime(path)

获取文件的创建时间(需要系统自身支持,否则和最后修改时间一样,例如 Unix/Linux 系统)。如果文件不存在或不可访问,抛出 os.error 异常。

os.path.getsize(path)

获取文件的大小,以字节为单位。如果文件不存在或不可访问,抛出 os.error 异常。

os.path.realpath(path)

返回 path 实际指向的目标路径,即消除所有的符号链接(前提是系统支持)。

os.path.isabs(path)

path 是绝对路径时返回 True。这意味着,在 Unix/Linux 下,以 / 开头;在 Windows 下,以 \ 开头(需斩掉盘符)

os.path.isfile(path)

path 指向的是一个文件时返回 True。此函数跟踪符号链接。

os.path.isdir(path)

path 指向的是一个目录时返回 True。此函数跟踪符号链接。

os.path.islink(path)

path 指向的是一个符号链接时返回 True。如果不支持符号链接,那么返回 False

os.path.exists(path)

path 指向一个实际存在的路径时返回 True。对于坏掉的符号链接,它返回 False

os.path.lexists(path)

path 指向一个实际存在的路径时返回 True。对于坏掉的符号链接,它返回 True


本作品由 Yysfire 创作,采用知识共享许可协议进行许可。转载时请在显著位置标明本文永久链接:
http://yysfire.github.io/python/python2-standard-library-os.path.html


相关文章


最后修改
2014-06-29 18:16
发表时间
2012-12-06 19:30
本文标签
os.path 1 Python 3
关注我

侧栏导航