python os.path模块学习

2020-04-01

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 为空,则 headtail 均为空。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//BA/B/A/./BA/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) , 如果文件描述符 fp1fp2 指向相同文件,则返回 True。适用于unix和windows。

操作路径的绝对路径和相对路径

  • os.path.abspath(path) , 返回路径 path 的绝对路径(标准化的)。

  • os.path.realpath(path) ,返回指定文件的规范路径,消除路径中存在的任何符号链接(如果操作系统支持)。
  • os.path.relpath(path, start=os.curdir) ,返回从当前目录或 start 目录(可选)到达 path 之间要经过的相对路径。这仅仅是对路径的计算,不会访问文件系统来确认 pathstart 的存在性或属性。