os.path 模块主要用来处理路径字符串,以提取出自己需要的信息。
1 | >>> from os import path |
将路径分割成一对元组(head,tail),tail 是路径中最后一个斜杠后面的部分,而 head 是前面所有的部分。tail 部分不会包含斜杠;如果路径是以斜杠结尾,那么 tail 将为空串。如果路径中不包含斜杠,那么 head 为空。路径尾部的斜杠,除非代表的是根目录,否则 head 会将其去掉。
1 2 | >>> path.split(pathstr) ('/home/user/archive', 'src.tar.gz') |
提取路径中的文件名,相当于 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/') '' |
提取路径中的目录名,相当于 split(path)
返回值的 head
。
1 2 | >>> path.dirname(pathstr) '/home/user/archive' |
将路径分割成元组(drive,tail)
,drive 是盘符部分,在不用盘符的系统上,drive 始终为空串。drive + tail
始终和path
一样。
1 2 | >>> path.splitdrive(pathstr) ('', '/home/user/archive/src.tar.gz') |
将路径分割成(root,ext)
,root + ext == path
,ext 部分以点号开头且至多包含一个点号。如果路径部分就是一个以点号开头的文件名,那么 ext 为空串。
1 2 3 4 | >>> path.splitext(pathstr) ('/home/user/archive/src.tar', '.gz') >>> path.splitext('.bashrc') ('.bashrc', '') |
将一个或多个路径组分智能地连接起来。
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' |
返回列表 list 中所有路径的最长相同首部,因为是逐个字符进行比较,所以可能得到的不是一个有效的路径。
1 2 | >>> path.commonprefix(['/home/user/aabb.log','/home/user/abc.txt']) '/home/user/a' |
返回path
对于当前工作目录或者start
指定路径的相对路径。start
的默认值就是os.curdir
。仅适用于 Windows 和 Unix(Linux)。
1 2 | >>> path.relpath(pathstr,'/home/user/doc') '../archive/src.tar.gz' |
将路径中的 ~
或者 ~user
扩展成用户的主目录。如果扩展失败,或是 path
不是以波浪线开头,那么 path
会被原样返回。
将路径中的环境变量($name
或 ${name}
)扩展成该变量自身的值。无效和异常的变量名不会被处理。在 Windows 系统下,还支持 %name%
的形式。
对路径进行大小写标准化处理。在对大小写不敏感的文件系统上,将路径全部转换成小写。在 Unix(Linux) 和 Mac OS X 系统上,不作修改。在 Windows 系统下,将路径中的斜杠(/
)全部转换成反斜杠(\
)。
对路径进行标准化处理。去掉路径中冗余的分隔符和表示相对路径的点号,例如,将A//B, A/B/, A/./B
和 A/foo/../B
全部变成 A/B
。在 Windows 系统下,将路径中的斜杠(/
)全部转换成反斜杠(\
)。
返回将 path
标准化后的绝对路径,相当于 normpath(join(os.getcwd(), path))
os.path 还可以用于检测路径是否有效,以及查询文件的相关信息(metadata)。
注意:在使用以下函数前,需要先将路径中的波浪线和环境变量扩展开。
获取文件的最后访问时间。如果文件不存在或不可访问,抛出 os.error
异常。
获取文件的最后修改时间。如果文件不存在或不可访问,抛出 os.error
异常。
获取文件的创建时间(需要系统自身支持,否则和最后修改时间一样,例如 Unix/Linux 系统)。如果文件不存在或不可访问,抛出 os.error
异常。
获取文件的大小,以字节为单位。如果文件不存在或不可访问,抛出 os.error
异常。
返回 path
实际指向的目标路径,即消除所有的符号链接(前提是系统支持)。
path
是绝对路径时返回 True
。这意味着,在 Unix/Linux 下,以 /
开头;在 Windows 下,以 \
开头(需斩掉盘符)
path
指向的是一个文件时返回 True
。此函数跟踪符号链接。
path
指向的是一个目录时返回 True
。此函数跟踪符号链接。
path
指向的是一个符号链接时返回 True
。如果不支持符号链接,那么返回 False
path
指向一个实际存在的路径时返回 True
。对于坏掉的符号链接,它返回 False
。
path
指向一个实际存在的路径时返回 True
。对于坏掉的符号链接,它返回 True
。
本作品由 Yysfire 创作,采用进行许可。转载时请在显著位置标明本文永久链接:
http://yysfire.github.io/python/python2-standard-library-os.path.html