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
如果设置将被使用,否则的组合HOMEPATH
和HOMEDRIVE
将被使用。~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//B
,A/B/
,A/./B
和A/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
如果文件描述符FP1
和FP2
指的是同一个文件。
可用性:Unix。
os.path.samestat(stat1, stat2)
返回True
如果统计的元组STAT1
和STAT2
指的是同一个文件。可能已经返回这些结构的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版本的新功能。