当前位置: 首页 > news >正文

Python标准库【os.path】操作路径

文章目录

  • 1 该模块的源文件
  • 2 提取路径信息
  • 3 获取文件信息
  • 4 判定路径状态
  • 5 变换路径
  • 6 路径拆分


os.path模块实现了一些操作路径相关的函数。它们都接收字符串、字节串格式的路径或类路径对象(实现os.PathLike协议)为参数。
接收字符串时,函数返回的结果也是字符串,接收字节串时,返回结果也是字节串。

参考:os.apth模块官方文档


1 该模块的源文件

由于不同的操作系统的路径名称约定不同,因此os.path模块在标准库中有好几个版本的源文件。使用时一般通过os.path来导入即可。

相关模块的关系图如下:

被引用
被引用
genericpath
(适用多种操作系统的方法集)
ntpath
(适用于Windows操作系统)
posixpath
(适用于符合POSIX标准的操作系统)

POSIX表示可移植操作系统接口,它定义了应用程序和UNIX操作系统之间的接口标准。


2 提取路径信息

  • os.path.abspath(path) 获取绝对路径
  • os.path.basename(path) 获取基本名称
  • os.path.dirname(path) 获取目录名称
  • os.path.commonpath(paths) 提取最长公共子路径
  • os.path.commonprefix(path) 提取最长公共前缀
    由于是提取前缀,因此可能出现不完整路径。
>>> wpath = "C:\\Users\\Public\\Downloads\\test.txt"
>>> os.path.basename(wpath)
'test.txt'
>>> os.path.dirname(wpath)
'C:\\Users\\Public\\Downloads'

3 获取文件信息

  • os.path.getatime(path) 获取文件的最后访问时间
    结果是秒为单位的时间戳。文件不存在时抛出异常。

  • os.path.getmtime(path) 获取文件的最后修改时间
    结果是秒为单位的时间戳。文件不存在时抛出异常。

  • os.path.getctime(path) 获取文件的ctime属性。
    Unix系统上是文件的元数据的最后修改时间。Windows上是创建时间。
    结果是秒为单位的时间戳。文件不存在时抛出异常。

  • os.path.getsize(path) 返回文件大小,单位为字节。
    对于不存在的路径会抛出异常。

>>> os.path.getatime(wpath)
1740746215.5601768
>>> os.path.getctime(wpath)
1740745904.2408884
>>> os.path.getmtime(wpath)
1740746214.4893484
>>> os.path.getsize(wpath)
10

4 判定路径状态

  • os.path.exists(path) 判断文件是否存在或文件描述符是否已打开。
    失效的符号链接会返回False。
    一些平台上如果os.stat()查询到对目标没有执行权限,就会返回False。

    >>> os.path.exists(5)  # 未打开的文件描述符
    False
    
  • os.path.lexists(path) 判断文件是否存在或文件描述符是否已打开。
    失效的符号链接也会返回True。

  • os.path.isabs(path) 是否为绝对路径

  • os.path.isfile(path) 是否为常规文件
    判定时会跟踪符号链接。

  • os.path.isdir(path) 是否为目录
    判定时会跟踪符号链接。

  • os.path.isjunction(path) 是否指向连接点
    平台不支持连接点时总会返回False。

    连接点是硬链接的一种,不过链接指向的是文件夹、分区等,且可以跨越不同的盘。

  • os.path.islink(path) 是否为符号链接

  • os.path.ismount(path) 是否为挂载点

    挂载点是文件系统中挂载其他文件系统、外部存储设备或网络共享资源的点。

  • os.path.isdevdrive(path) path是否位于一个Windows Dev驱动器

  • os.path.isreserved(path) path是否为当前系统的保留路径名
    仅Windows可用。

  • os.path.samefile(path1, path2) 两个路径的目标是否相同

  • os.path.sameopenfile(fp1, fp2) 两个文件描述符是否指向相同的文件。

  • os.path.samestat(stat1, stat2) 两个stat元祖是否指向相同的文件

>>> os.path.isabs(wpath)
True
>>> os.path.isfile(wpath)
True
>>> os.path.isdir(wpath)
False
>>> os.path.isjunction(wpath)
False
>>> os.path.islink(wpath)
False
>>> os.path.isdevdrive(wpath)
False
>>> os.path.isreserved(wpath)
False
>>> os.path.isreserved("D:")
False

5 变换路径

  • os.path.expandvars(path) 将带有环境变量的路径展开。
    path中$name${name}格式的子串会被环境变量name的值替换。
    如果path中变量名称格式错误或不存在,就保持不变。

    >>> os.path.expandvars("${HOME}")
    '/home/root'
    
  • os.path.expanduser(path) 把路径开头的~~user替换为当前用户的家目录。
    Unix上会使用环境变量HOME代替。该变量未设置或path以~user开头,就直接去password目录中查找。

    Windows上会使用USERPROFILE,未设置时组合使用HOMEPATH和HOMEDRIVE。~user会检查当前用户的家目录中匹配的目录名并替换。

    Windows系统:

    >>> os.path.expanduser("~")
    'C:\\Users\\x'
    

    Linux系统:

    >>> os.path.expanduser("~")
    '/home/root'
    >>> os.path.expanduser("~root")
    '/root'
    
  • os.path.join(path, *paths) 智能合并路径
    如果某个path为绝对路径,则之前的所有部分会被忽略并从该绝对路径开始拼接。(Windows上需要有驱动器号)

  • os.path.normcase(path) 规范路径的大小写
    Windows会将路径中所有字符转为小写,并把正斜杠转为反斜杠。其它操作系统会原样返回。

    >>> os.path.normcase(wpath)
    'c:\\users\\public\\downloads\\test.txt'
    
  • os.path.normpath(path) 折叠多余的分隔符和上级目录。

  • os.path.realpath(path, *, strict=False) 返回path的规范路径
    去掉在path中出现的符号链接。
    路径不存在或符号链接死循环时,如果strict为True,就抛出异常。

  • os.path.relpath(path, start=os.curdir) 返回start目录到path目录的相对路径

    >>> os.path.relpath(wpath)
    '..\\Public\\Downloads\\test.txt'
    

6 路径拆分

  • os.path.split(path) 拆分路径为(head, tail)
    tail是路径的最后一部分,head是处最后一部分外的所有内容。

  • os.path.splitdrive(path) 拆分路径为(drive, tail)
    drive是挂载点或空字符串,没有驱动器概念的系统上始终为空字符串。

  • os.path.splitroot(path) 拆分路径为(drive, root, tail)
    root表示drive之后的分隔符,tail是root之后的所有内容。

  • os.path.splitext(path) 拆分路径为(root, ext)
    ext为扩展名,以句点开头并且最多只包含一个句点。
    path中的最后一部分如果以句点开头,就会被当做root的一部分。

>>> os.path.split(wpath)
('C:\\Users\\Public\\Downloads', 'test.txt')
>>> os.path.splitdrive(wpath)
('C:', '\\Users\\Public\\Downloads\\test.txt')
>>> os.path.splitroot(wpath)
('C:', '\\', 'Users\\Public\\Downloads\\test.txt')
>>> os.path.splitext(wpath)
('C:\\Users\\Public\\Downloads\\test', '.txt')

以上是os.path模块操作路径的方法整理。
其它模块的方法参考:python标准库方法整理

相关文章:

  • vue el-table-column 单元表格的 省略号 实现
  • 人工智能之数学基础:线性代数中矩阵的初印象
  • .sql文件怎么打开
  • vLLM服务设置开机自启动(Linux)
  • 解决 Tkinter 在 Linux 上 Combobox 组件导致焦点丢失问题
  • react工程化开发
  • BIO、NIO、AIO、Netty从简单理解到使用
  • C# Lambda表达式
  • CMU15445(2023fall) Project #3 - Query Execution(上)详细分析
  • cuda-12.4.0 devel docker 中源码安装 OpenAI triton
  • 秋招:现状与应对措施,如何做好秋招与暑期实习的衔接?
  • 操作系统知识点12
  • 详解 HashMap扩容机制,HashMap的底层原理以及HashSet在底层原理
  • Java Web应用中获取客户端的真实IP地址
  • 【AI论文】时间有其定位吗?时间信息头:语言模型在何处回忆时间特定信息
  • Stable Diffusion(SD)系列模型及关联算法深度解析
  • 多个pdf合并成一个pdf的方法
  • 我的AI工具箱Tauri+Django环境开发,支持局域网使用
  • 力扣练习之递增的三元子序列
  • Spring系列学习之Spring CredHub
  • 好看的网站的导航怎么做/促销活动推广方案
  • 医院网站建设 费用/长尾关键词在线查询
  • 苹果cms搭建教程/福州seo推广服务
  • 定制手机壳的网站/软文推广收费
  • 主网站怎么做熊掌号优化/百度加盟
  • 西樵网站建设公司/电脑培训机构