python os.path模块学习
目录
引言
python 的os.path模块,实现了对文件路径的操作。使用时,可以import os
或者import os.path
。今天学习了python的os.path标准库 文件目录和访问 ,整理了较为常用的路径操作函数。
常用函数
路径分割、扩展名和路径拼接函数
os.path.split(path)
, 将路径 path 拆分为一对,即(head, tail)
,其中,tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空。如果 path 中没有斜杠,head 将为空。如果 path 为空,则 head 和 tail 均为空。head 末尾的斜杠会被去掉,除非它是根目录(即它仅包含一个或多个斜杠)。在所有情况下,join(head, tail)
指向的位置都与 path 相同(但字符串可能不同)。os.path.splitext(path)
, 将路径 path 拆分为一对,即(root, ext)
,使root + ext == path
,其中 ext 为空或以英文句点开头,且最多包含一个句点。路径前的句点将被忽略,例如splitext('.cshrc')
返回('.cshrc', '')
os.path.join(path, *paths)
, 合理地拼接一个或多个路径部分。返回值是 path 和 *paths 所有值的连接,每个非空部分后面都紧跟一个目录分隔符 (os.sep
),除了最后一部分。这意味着如果最后一部分为空,则结果将以分隔符结尾。如果参数中某个部分是绝对路径,则绝对路径前的路径都将被丢弃,并从绝对路径部分开始连接。
返回路径的路径名称或文件名称
os.path.dirname(path)
, 返回路径 path 的目录名称。这是将 path 传入函数split()
之后,返回的一对值中的第一个元素os.path.basename(path)
, 返回路径 path 的基本名称。这是将 path 传入函数split()
之后,返回的一对值中的第二个元素。
获得不同路径的最长公共子路径
os.path.commonpath
, 接受包含多个路径的序列 paths,返回 paths 的最长公共子路径。如果 paths 同时包含绝对路径和相对路径,或 paths 在不同的驱动器上,或 paths 为空,则抛出ValueError
异常。与commonprefix()
不同,本方法返回有效路径。os.path.commonprefix
, 接受包含多个路径的 列表,返回所有路径的最长公共前缀(逐字符比较)。如果 列表 为空,则返回空字符串 (''
)。注意,此函数是逐字符比较,因此可能返回无效路径。
规范路径的大小写或重复的分隔符
os.path.normcase(path)
, 规范路径的大小写。在 Windows 上,将路径中的所有字符都转换为小写,并将正斜杠转换为反斜杠。在其他操作系统上返回原路径。os.path.normpath(path)
, 通过折叠多余的分隔符和对上级目录的引用来标准化路径名,所以A//B
、A/B/
、A/./B
和A/foo/../B
都会转换成A/B
。这个字符串操作可能会改变带有符号链接的路径的含义。在 Windows 上,本方法将正斜杠转换为反斜杠。
获取路径操作时间及路径中文件大小
os.path.getatime(path)
,返回 path 的最后访问时间。返回值是一个浮点数,为纪元秒数(参见time
)。如果该文件不存在或不可访问,则抛出OSError
异常。os.path.getmtime(path)
, 返回 path 的最后修改时间。返回值是一个浮点数,为纪元秒数(参见time
模块)。如果该文件不存在或不可访问,则抛出OSError
异常。os.path.getctime(path)
, 返回 path 在系统中的 ctime,在有些系统(比如 Unix)上,它是元数据的最后修改时间,其他系统(比如 Windows)上,它是 path 的创建时间。返回值是一个数,为纪元秒数(参见time
模块)。如果该文件不存在或不可访问,则抛出OSError
异常。os.path.getsize(path)
, 返回 path 的大小,以字节为单位。如果该文件不存在或不可访问,则抛出OSError
异常。
路径判断的相关函数
os.path.exists(path)
, 如果 path 指向一个已存在的路径或已打开的文件描述符,返回True
。对于失效的符号链接,返回False
。
os.path.isfile(path)
, 如果 path 是常规文件,则返回True
。os.path.isdir(path)
, 如果 path 是常规目录,则返回True
。
os.path.isabs(path)
, 如果 path 是一个绝对路径,则返回True
。在 Unix 上,它就是以斜杠开头,而在 Windows 上,它可以是去掉驱动器号后以斜杠(或反斜杠)开头。
os.path.samefile(path1, path2)
, 如果两个路径都指向相同的文件或目录,则返回True
。os.path.sameopenfile(fp1, fp2)
, 如果文件描述符 fp1 和 fp2 指向相同文件,则返回True
。适用于unix和windows。
操作路径的绝对路径和相对路径
-
os.path.abspath(path)
, 返回路径 path 的绝对路径(标准化的)。 -
os.path.realpath(path)
,返回指定文件的规范路径,消除路径中存在的任何符号链接(如果操作系统支持)。 -
os.path.relpath(path, start=os.curdir)
,返回从当前目录或 start 目录(可选)到达 path 之间要经过的相对路径。这仅仅是对路径的计算,不会访问文件系统来确认 path 或 start 的存在性或属性。