标准库:os.path --- 常用路径操作

​ Lib/ntpath.py  用于 Windows 路径

该模块在路径名上实现了一些有用的功能:如需读取或写入文件,请参见 open() ;有关访问文件系统的信息,请参见 os 模块。


os.path.abspath(path)

返回路径 path 的绝对路径(标准化的)。

import os.path

print(os.path.abspath('E://资料//python//代码'))
# output: E:\资料\python\代码
print(os.path.abspath('E:\\资料\python/代码'))
# output: E:\资料\python\代码

os.path.basename(path)

返回路径 path 的基本名称。这是将 path 传入函数 split() 之后,返回的一对值中的第二个元素。请注意,此函数的结果与Unix basename 程序不同。basename 在 '/foo/bar/' 上返回 'bar',而 basename() 函数返回一个空字符串 ('')。

import os.path

print(os.path.basename('E:\资料\python\代码'))
# output: 代码

os.path.commonpath(paths)

接受包含多个路径的序列 paths,返回 paths 的最长公共子路径。如果 paths 同时包含绝对路径和相对路径,或 paths 在不同的驱动器上,或 paths 为空,则抛出 ValueError 异常。与 commonprefix() 不同,本方法返回有效路径。

import os.path

print(os.path.commonpath(['E:\资料\python\代码','E:\资料\python','E:\资料']))
# output: E:\资料

os.path.commonprefix(list)

接受包含多个路径的 列表,返回所有路径的最长公共前缀(逐字符比较)。如果 列表 为空,则返回空字符串 ('')。

import os.path

print(os.path.commonprefix(['E:\资料\python\代码','E:\资料\python','E:\资料']))
# output: E:\资料

os.path.dirname(path)

返回路径 path 的目录名称。这是将 path 传入函数 split() 之后,返回的一对值中的第一个元素。

import os.path

print(os.path.dirname('E:\资料\python\代码'))
# output: E:\资料\python

print(os.path.dirname('E:/资料/python/代码/'))
# output: E:/资料/python/代码

os.path.exists(path)

如果 path 指向一个已存在的路径或已打开的文件描述符,返回 True

对于失效的符号链接,返回 False

import os.path

print(os.path.exists('E:\资料\python\代码'))
# output: True

print(os.path.exists('E:\资料1\python\代码'))
# output: False

os.path.lexists(path)

如果 path 指向一个已存在的路径,返回 True

对于失效的符号链接,也返回 True

import os.path

print(os.path.lexists('E:\资料\python\代码'))
# output: True

print(os.path.lexists('E:\资料1\python\代码'))
# output: False

os.path.expanduser(path)

在 Unix 和 Windows 上,将参数中开头部分的 ~ 或 ~user 替换为当前 用户 的家目录并返回。

在 Windows 上,如果 USERPROFILE 已设置将会被使用,否则 HOMEPATH 和 HOMEDRIVE 将被组合起来使用。 初始的 ~user 会通过检查当前用户的家目录中匹配 USERNAME 的最后一部分目录名并执行替换来处理。

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

import os.path

print(os.path.expanduser('~user '))
# output: C:\Users\user

print(os.path.expanduser('~'))
# output: C:\Users\51cc

os.path.expandvars(path)

输入带有环境变量的路径作为参数,返回展开变量以后的路径。$name 或 ${name} 形式的子字符串被环境变量 name 的值替换。格式错误的变量名称和对不存在变量的引用保持不变。

在 Windows 上,除了 $name 和 ${name} 外,还可以展开 %name%

import os.path

print(os.path.expandvars('%USERNAME%'))
# output: 51cc

os.path.getatime(path)

返回 path 的最后访问时间。返回值是一个浮点数,为纪元秒数(参见 time 模块)。如果该文件不存在或不可访问,则抛出 OSError 异常。

import os.path

print(os.path.getatime('E:\资料\python\代码'))
# output: 1649469553.8871965

os.path.getmtime(path)

返回 path 的最后修改时间。返回值是一个浮点数,为纪元秒数(参见 time 模块)。如果该文件不存在或不可访问,则抛出 OSError 异常。

import os.path

print(os.path.getmtime('E:\资料\python\代码'))
# output: 1648383976.1234438

os.path.getctime(path)

返回 path 在系统中的 ctime,在有些系统(比如 Unix)上,它是元数据的最后修改时间,其他系统(比如 Windows)上,它是 path 的创建时间。返回值是一个数,为纪元秒数(参见 time 模块)。如果该文件不存在或不可访问,则抛出 OSError 异常。

import os.path

print(os.path.getctime('E:\资料\python\代码'))
# output: 1648383968.8365107

os.path.getsize(path)

返回 path 的大小,以字节为单位。如果该文件不存在或不可访问,则抛出 OSError 异常。

import os.path

print(os.path.getsize('E:\资料\python\代码'))
# output: 0

print(os.path.getsize('E:\资料\python\代码\python入门代码\第二课_变量\list.py'))
# output: 57

os.path.isabs(path)

如果 path 是一个绝对路径,则返回 True。在 Unix 上,它就是以斜杠开头,而在 Windows 上,它可以是去掉驱动器号后以斜杠(或反斜杠)开头。

import os.path

print(os.path.isabs('E:\资料\python\代码'))
# output: 0

print(os.path.isabs('.\python\代码'))
# output: False

os.path.isfile(path)

如果 path 是 现有的 常规文件,则返回 True。本方法会跟踪符号链接,因此,对于同一路径,islink() 和 isfile() 都可能为 True

import os.path

print(os.path.isfile('E:\资料\python\代码'))
# output: False

print(os.path.isfile('E:\资料\python\代码\python入门代码\第二课_变量\list.py'))
# output: True

os.path.isdir(path)

如果 path 是 现有的 目录,则返回 True。本方法会跟踪符号链接,因此,对于同一路径,islink() 和 isdir() 都可能为 True

import os.path

print(os.path.isdir('E:\资料\python\代码'))
# output: True

print(os.path.isdir('E:\资料\python\代码\python入门代码\第二课_变量\list.py'))
# output: False

os.path.islink(path)

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

例如:在Unix或Linux中,可以使用ln命令创建软链接或符号链接。

import os.path

print(os.path.islink('E:\sheet1.xlsx'))
# output: False

os.path.ismount(path)

如果路径 path 是 挂载点 (文件系统中挂载其他文件系统的点),则返回 True。在 POSIX 上,该函数检查 path 的父目录 path/.. 是否在与 path 不同的设备上,或者 path/.. 和 path 是否指向同一设备上的同一 inode(这一检测挂载点的方法适用于所有 Unix 和 POSIX 变体)。本方法不能可靠地检测同一文件系统上的绑定挂载 (bind mount)。在 Windows 上,盘符和共享 UNC 始终是挂载点,对于任何其他路径,将调用 GetVolumePathName 来查看它是否与输入的路径不同。

import os.path

print(os.path.ismount('E:\\'))
# output: True

print(os.path.ismount('E:\Program Files (x86)'))
# output: False

os.path.join(path*paths)

智能地拼接一个或多个路径部分。 返回值是 path 和 *paths 的所有成员的拼接,其中每个非空部分后面都紧跟一个目录分隔符,最后一个部分除外,这意味着如果最后一个部分为空,则结果将以分隔符结尾。 如果某个部分为绝对路径,则之前的所有部分会被丢弃并从绝对路径部分开始继续拼接。

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

import os.path

print(os.path.join('E:\Program Files (x86)','Microsoft Visual Studio','2019' ,'Enterprise' ,'Common7'))
# output: E:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7

os.path.normcase(path)

规范路径的大小写。在 Windows 上,将路径中的所有字符都转换为小写,并将正斜杠转换为反斜杠。在其他操作系统上返回原路径。

import os.path

print(os.path.normcase(r'E:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7'))
# output: e:\program files (x86)\microsoft visual studio\2019\enterprise\common7

os.path.normpath(path)

通过折叠多余的分隔符和对上级目录的引用来标准化路径名,所以 A//BA/B/A/./B 和 A/foo/../B 都会转换成 A/B。这个字符串操作可能会改变带有符号链接的路径的含义。在 Windows 上,本方法将正斜杠转换为反斜杠。要规范大小写,请使用 normcase()

import os.path

print(os.path.normpath(r'E://Program Files (x86)/Microsoft Visual Studio/./2019/Enterprise/Common7'))
# output: E:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7

os.path.realpath(path*strict=False)

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

如果一个路径不存在或是遇到了符号链接循环,并且 strict 为 True,则会引发 OSError。 如果 strict 为 False,则会尽可能地解析路径并添加结果而不检查路径是否存在。

os.path.relpath(pathstart=os.curdir)

返回从当前目录或可选的 start 目录至 path 的相对文件路径。 这只是一个路径计算:不会访问文件系统来确认 path 或 start 是否存在或其性质。 在 Windows 上,当 path 和 start 位于不同驱动器时将引发 ValueError

start 默认为 os.curdir

import os.path

print(os.path.relpath(r'E:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7',r'E:\Program Files (x86)'))
# output: Microsoft Visual Studio\2019\Enterprise\Common7

os.path.samefile(path1path2)

如果两个路径都指向相同的文件或目录,则返回 True。这由设备号和 inode 号确定,在任一路径上调用 os.stat() 失败则抛出异常。

import os.path

print(os.path.samefile(r'E:\Program Files (x86)\Microsoft Visual Studio\2019', r'.'))
# output: False

print(os.path.samefile(r'E:\PyCode\Python_Study', r'.'))
# output: True

os.path.sameopenfile(fp1fp2)

如果文件描述符 fp1 和 fp2 指向相同文件,则返回 True

可用性: Unix, Windows。

import os.path

print(os.path.samefile(r'E:\Program Files (x86)\Microsoft Visual Studio\2019', r'.'))
# output: False

print(os.path.samefile(r'E:\PyCode\Python_Study', r'.'))
# output: True

os.path.samestat(stat1stat2)

如果 stat 元组 stat1 和 stat2 指向相同文件,则返回 True。这些 stat 元组可能是由 os.fstat()os.lstat() 或 os.stat() 返回的。本函数实现了 samefile() 和 sameopenfile() 底层所使用的比较过程。

os.path.split(path)

将路径 path 拆分为一对,即 (head, tail),其中,tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空。如果 path 中没有斜杠,head 将为空。如果 path 为空,则 head 和 tail 均为空。head 末尾的斜杠会被去掉,除非它是根目录(即它仅包含一个或多个斜杠)。在所有情况下,join(head, tail) 指向的位置都与 path 相同(但字符串可能不同)。另请参见函数 dirname() 和 basename()

import os.path

print(os.path.split(r'E:\PyCode\Python_Study\LsitDemo.py'))
# output: ('E:\\PyCode\\Python_Study', 'LsitDemo.py')

os.path.splitdrive(path)

将路径 path 拆分为一对,即 (drive, tail),其中 drive 是挂载点或空字符串。在没有驱动器概念的系统上,drive 将始终为空字符串。在所有情况下,drive + tail 都与 path 相同。

import os.path

print(os.path.splitdrive(r'E:\PyCode\Python_Study\LsitDemo.py'))
# output: ('E:', '\\PyCode\\Python_Study\\LsitDemo.py')

os.path.splitext(path)

将路径名称 path 拆分为 (root, ext) 对使得 root + ext == path,并且扩展名 ext 为空或以句点打头并最多只包含一个句点。

import os.path

print(os.path.splitext(r'E:\PyCode\Python_Study\LsitDemo.py'))
# output: ('E:', '\\PyCode\\Python_Study\\LsitDemo.py')

os.path.supports_unicode_filenames

如果(在文件系统限制下)允许将任意 Unicode 字符串用作文件名,则为 True

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值