os.path —通用路径名操作

源代码: Lib/posixpath.py(对于 POSIX)和Lib/ntpath.py(对于 Windows NT)。


该模块在路径名上实现了一些有用的Function。要读取或写入文件,请参见open(),要访问文件系统,请参见os模块。路径参数可以字符串或字节形式传递。鼓励应用程序将文件名表示为(Unicode)字符串。不幸的是,某些文件名在 Unix 上可能无法用字符串表示,因此需要在 Unix 上支持任意文件名的应用程序应使用字节对象表示路径名。反之亦然,使用字节对象不能代表 Windows 上的所有文件名(以标准mbcs编码),因此 Windows 应用程序应使用字符串对象来访问所有文件。

与 unix shell 不同,Python 不执行任何“自动”路径扩展。当应用程序需要类 Shell 路径扩展时,可以显式调用诸如expanduser()expandvars()之类的Function。 (另请参见glob模块。)

See also

pathlib模块提供高级路径对象。

Note

所有这些函数都仅接受字节或字符串对象作为其参数。如果返回路径或文件名,则结果是相同类型的对象。

Note

由于不同的 os 具有不同的路径名约定,因此标准库中有该模块的多个版本。 os.path模块始终是适用于运行 Python 的 os 的路径模块,因此可用于本地路径。但是,如果您要操纵的路径始终(以不同格式之一),也可以导入和使用各个模块。它们都有相同的接口:

  • posixpath用于 UNIX 样式的路径

  • ntpath用于 Windows 路径

在 3.8 版中进行了更改:exists()lexists()isdir()isfile()islink()ismount()现在返回False,而不是为包含在 os 级别无法表示的字符或字节的路径引发异常。

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

Availability:Unix,Windows。

3.5 版中的新Function。

在版本 3.6 中更改:接受path-like objects的序列。

Note

此函数可能一次返回一个字符,因此可能返回无效路径。要获取有效路径,请参见commonpath()

>>> os.path.commonprefix(['/usr/lib', '/usr/local/lib'])
'/usr/l'

>>> os.path.commonpath(['/usr/lib', '/usr/local/lib'])
'/usr'

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

在版本 3.3 中更改:* path *现在可以是整数:如果它是打开的文件 Descriptors,则返回True,否则返回False

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

在 Unix 上,如果设置了初始变量~,则将其设置为环境变量 HOME;否则,pass内置模块pwd在密码目录中查找当前用户的主目录。直接在密码目录中查找首字母~user

在 Windows 上,如果已设置,则将使用 USERPROFILE,否则将使用 HOMEPATH HOMEDRIVE的组合。初始~user是pass从上面派生的创建的用户路径中删除最后一个目录组件来处理的。

如果扩展失败,或者路径不是以波浪号开头,则路径将保持不变。

在版本 3.6 中更改:接受path-like object

在 3.8 版中进行了更改:在 Windows 上不再使用 HOME

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

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

3.4 版中的新Function:支持在 Windows 上检测非根安装点。

在版本 3.6 中更改:接受path-like object

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

在版本 3.6 中更改:接受path-like object表示* path paths *。

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

Note

当发生符号链接周期时,返回的路径将是该周期的一个成员,但不能保证将成为哪个成员。

在版本 3.6 中更改:接受path-like object

在 3.8 版中进行了更改:现在可以在 Windows 上解决符号链接和结。

开始默认为os.curdir

Availability:Unix,Windows。

在版本 3.6 中更改:接受path-like object

Availability:Unix,Windows。

在版本 3.2 中更改:添加了 Windows 支持。

在版本 3.4 中进行了更改:Windows 现在使用与所有其他平台相同的实现。

在版本 3.6 中更改:接受path-like object

Availability:Unix,Windows。

在版本 3.2 中更改:添加了 Windows 支持。

在版本 3.6 中更改:接受path-like object

Availability:Unix,Windows。

在版本 3.4 中更改:添加了 Windows 支持。

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

在 Windows 上,将路径名分为驱动器/ UNC 共享点和相对路径。

如果路径包含驱动器号,则驱动器将包含直到冒号(包括冒号)的所有内容。例如splitdrive("c:/dir")返回("c:", "/dir")

如果路径包含 UNC 路径,则驱动器将包含主机名和共享,最多但不包括第四个分隔符。例如splitdrive("//host/computer/dir")返回("//host/computer", "/dir")

在版本 3.6 中更改:接受path-like object

在版本 3.6 中更改:接受path-like object

首页