在线文档教程

os.path

os.path - 通用路径名操作

该模块在路径名上实现了一些有用的功能。要读取或写入文件open(),请参阅os模块,以及访问文件系统。

注意

在Windows上,许多这些功能不能正确支持UNC路径名。splitunc()ismount()正确处理它们。

与unix shell不同,Python不会执行任何自动路径扩展。当应用程序需要类似shell的路径扩展时expanduser()expandvars()可以显式调用诸如和的函数。(另见glob模块。)

注意

由于不同的操作系统具有不同的路径名称约定,因此标准库中有该模块的几个版本。该os.path模块始终是适用于Python运行的操作系统的路径模块,因此可用于本地路径。但是,如果要操纵始终采用不同格式之一的路径,还可以导入和使用各个模块。它们都具有相同的界面:

  • posixpath 对于UNIX风格的路径

  • ntpath 为Windows路径

  • macpath 适用于旧式MacOS路径

  • os2emxpath 适用于OS / 2 EMX路径

os.path.abspath(path)

返回路径路径的归一化绝对版本。在大多数平台上,这相当于normpath()如下调用函数:normpath(join(os.getcwd(), path))

1.5.2版本的新功能。

os.path.basename(path)

返回路径路径基本名称。这是通过传递函数路径返回的对中的第二个元素split()。请注意,该函数的结果与Unix 基本程序不同,其中基名'/foo/bar/'回报'bar',该basename()函数返回一个空字符串('')。

os.path.commonprefix(list)

返回列表中所有路径前缀的最长路径前缀(逐个字符)。如果列表为空,则返回空字符串('')。请注意,这可能会返回无效的路径,因为它一次处理一个字符。

os.path.dirname(path)

返回路径路径的目录名称。这是通过传递函数路径返回的第一个元素split()

os.path.exists(path)

如果路径指向现有路径,则返回True。返回False已损坏的符号链接。在某些平台上,如果未授予os.stat()对所请求的文件执行权限(即使路径实际存在),此函数可能会返回False

os.path.lexists(path)

True如果路径指向现有路径,则返回。返回True已损坏的符号链接。相当于exists()缺乏平台os.lstat()

2.4版本中的新功能。

os.path.expanduser(path)

在Unix和Windows上,返回该参数的初始组件~~user由该用户的主目录替换。

在Unix上,如果设置了初始~值,则由环境变量替换HOME; 否则通过内置模块在密码目录中查找当前用户的主目录pwd。初始~user值直接在密码目录中查找。

在Windows中,HOME而且USERPROFILE如果设置将被使用,否则的组合HOMEPATHHOMEDRIVE将被使用。~user通过剥离上面创建的用户路径中的最后一个目录组件来处理初始化。

如果展开失败或路径不以波形开始,则路径将保持不变。

os.path.expandvars(path)

返回扩展了环境变量的参数。子表格的子字符串$name或被${name}环境变量名称的值替换。格式错误的变量名称和对不存在的变量的引用保持不变。

在Windows上,除了$name{name},还支持扩展%name%$

os.path.getatime(path)

返回上次访问路径的时间。返回值是一个给出历元以来秒数的数字(参见time模块)。提高os.error如果文件不存在或无法访问。

1.5.2版本的新功能。

版本2.3中更改:如果os.stat_float_times()返回True,则结果为浮点数。

os.path.getmtime(path)

返回最后修改路径的时间。返回值是一个给出历元以来秒数的数字(参见time模块)。提高os.error如果文件不存在或无法访问。

1.5.2版本的新功能。

版本2.3中更改:如果os.stat_float_times()返回True,则结果为浮点数。

os.path.getctime(path)

返回系统的ctime,在某些系统上(如Unix)是最后一次元数据更改的时间,而在另一些系统(如Windows)上则是创建路径的时间。返回值是一个给出历元以来秒数的数字(参见time模块)。提高os.error如果文件不存在或无法访问。

2.3版本的新功能。

os.path.getsize(path)

返回路径的大小(以字节为单位)。提高os.error如果文件不存在或无法访问。

1.5.2版本的新功能。

os.path.isabs(path)

True如果路径是绝对路径名,则返回。在Unix上,这意味着它以斜线开始,在Windows上,它在切断潜在驱动器盘符后以(后退)斜杠开始。

os.path.isfile(path)

True如果路径是现有的常规文件,则返回。这是继符号链接,这样既islink()并且isfile()可以为相同的路径是正确的。

os.path.isdir(path)

True如果路径是现有目录,则返回。这是继符号链接,这样既islink()并且isdir()可以为相同的路径是正确的。

os.path.islink(path)

True如果路径指向一个符号链接的目录条目,则返回。总是False如果Python运行时不支持符号链接。

os.path.ismount(path)

True如果路径路径装载点,则返回:装入不同文件系统的文件系统中的一个点。功能检查是否路径的母公司path/..,是一个不同的设备比路径,或是否path/..路径指向相同的设备在相同的i节点-这应该检测挂载点所有的Unix和POSIX变体。

os.path.join(path, *paths)

智能地加入一个或多个路径组件。返回值是路径*路径的任何成员的连接,每个除了最后一个非空部分之后,都有一个目录分隔符(os.sep),这意味着如果最后一部分为空,结果将仅在分隔符中结束。如果某个组件是绝对路径,则所有先前的组件都将被丢弃,并从绝对路径组件继续加入。

在Windows上,当遇到绝对路径组件(例如,r'\foo')时,驱动器号不会重置。如果组件包含驱动器号,则以前的所有组件都将被丢弃,并重置驱动器号。请注意,由于每个驱动器都有当前目录,因此os.path.join("c:", "foo")表示相对于drive C:c:foo)上当前目录的路径,而不是c:\foo

os.path.normcase(path)

规范化路径名的情况。在Unix和Mac OS X上,这将返回路径不变; 在不区分大小写的文件系统上,它将路径转换为小写。在Windows上,它也将正斜杠转换为反斜杠。

os.path.normpath(path)

通过折叠冗余分离器和上一级引用正常化的路径名,这样A//BA/B/A/./BA/foo/../B一切变得A/B。此字符串操作可能会更改包含符号链接的路径的含义。在Windows上,它将正斜杠转换为反斜杠。要标准化案例,请使用normcase()

os.path.realpath(path)

返回指定文件名的规范路径,消除路径中遇到的任何符号链接(如果它们受操作系统支持)。

2.2版本中的新功能。

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

从当前目录或从可选的开始目录中将相关文件路径返回到路径。这是一个路径计算:不访问文件系统来确认路径开始的存在或性质。

开始默认为os.curdir

可用性:Windows,Unix。

2.6版本中的新功能。

os.path.samefile(path1, path2)

返回True如果两个路径名参数指的是相同的文件或目录(由设备号和i节点号所示)。如果os.stat()任一路径名称上的调用失败,请引发异常。

可用性:Unix。

os.path.sameopenfile(fp1, fp2)

返回True如果文件描述符FP1FP2指的是同一个文件。

可用性:Unix。

os.path.samestat(stat1, stat2)

返回True如果统计的元组STAT1STAT2指的是同一个文件。可能已经返回这些结构的os.fstat()os.lstat()os.stat()。这个函数实现samefile()和使用的底层比较sameopenfile()

可用性:Unix。

os.path.split(path)

路径路径拆分为一对,(head, tail)其中tail是最后一个路径名组件,head是导致该路径名的所有内容。在尾部部分永远不会包含一个斜杠; 如果路径以斜线结尾,则尾部将为空。如果路径中没有斜线,则头部将是空的。如果路径为空,则头部尾部都是空的。除非是根部(仅限一个或多个斜线),否则尾部的斜线会从头部剥离。在所有情况下,join(head, tail)返回到路径相同位置的路径(但字符串可能不同)。另请参阅函数dirname()basename()

os.path.splitdrive(path)

路径路径拆分成一对(drive, tail),其中驱动器驱动器规格或空字符串。在不使用驱动器规格的系统上,驱动器将始终为空字符串。在所有情况下,drive + tail都将与路径相同。

1.3版新增功能

os.path.splitext(path)

分裂路径路径成一对(root, ext),使得root + ext == path,和分机是空的或用一个周期开始,并且包含至多一个周期。基准名称上的主要时段将被忽略; splitext('.cshrc')返回('.cshrc', '')

在版本2.6中更改:当唯一的时间段是第一个字符时,早期版本可能会产生一个空的根。

os.path.splitunc(path)

路径路径拆分为一对,(unc, rest)以便unc是UNC挂载点(如r'\\host\mount')(如果存在),并保留路径的其余部分(如r'\path\file.ext')。对于包含驱动器号的路径unc将始终为空字符串。

可用性:Windows。

os.path.walk(path, visit, arg)

使用参数调用目录树中每个目录的函数访问(arg, dirname, names)该目录树以路径为根(包括路径本身,如果是目录)。参数dirname指定访问目录,参数名称列出目录中的文件(从中获取os.listdir(dirname))。该访问功能可以修改名字影响设置访问下面的目录目录名称,例如避免前往树的某些部分。(名称引用的对象必须使用del或切片分配进行修改。)

注意

符号链接到目录不被视为子目录,walk()因此不会访问它们。要访问链接的目录,必须使用os.path.islink(file)和标识它们os.path.isdir(file),并walk()根据需要调用。

注意

这个函数已经被弃用,并且已经在Python 3中被删除,转而使用os.walk()

os.path.supports_unicode_filenames

True 如果任意Unicode字符串可以用作文件名(在由文件系统施加的限制内)。

2.3版本的新功能。