【Python】os.path模块

os.path.abspath(path)

参数:

  • path:要转换为绝对路径的路径字符串

返回值:

  • 返回一个字符串,表示给定路径的绝对路径

关键点:

  1. 如果提供的路径已经是绝对路径,则返回的结果不变

os.path.basename(path)

参数:

  • path: 需要获取文件名或文件夹名的路径字符串

返回值:

  • 返回路径字符串中的最后一个部分,即文件名或目录名

关键点:

  1. 如果路径以斜杠结尾,返回值可能为空字符串
  2. 如果指定路径本身就是一个文件(夹)名而不是文件路径,os.path.basename() 函数将返回文件(夹)名本身
import os

path = 'C:\\Windows\\System32\\CatRoot'
print(os.path.basename(path))

#-> CatRoot


path = 'test.txt'
print(os.path.basename(path))

#-> test.txt

os.path.commonpath(paths)

参数:

  • paths:一个包含多个路径的可迭代对象

返回值:

  • 返回所有路径的共同前缀部分。如果没有共同路径,则返回空字符串
import os

paths = ['./Windows/User\\Downloads', 
         './Windows/User/Documents', 
         './Windows\\User\\Desktop']
print(os.path.commonpath(paths))

#-> Windows\User

os.path.commonprefix(list)

参数:

  • list:一个包含多个字符串的列表

返回值:

  • 返回一个字符串,表示所有字符串的共同前缀。如果没有共同前缀,则返回空字符串

关键点:

  1. 该函数是基于字符比较的,因此适用于任何字符串,而不仅限于文件路径
import os

list = ['./Home/User/Downloads', 
        './Home/User/Documents', 
        './Home/User/Desktop']
print(os.path.commonprefix(list))

#-> ./Home/User/D

os.path.dirname(path)

参数:

  • path:要处理的路径字符串

返回值:

  • 返回一个字符串,表示路径的目录部分。如果路径是根目录或没有目录部分,则返回空字符串

关键点:

  1. 如果路径以斜杠结尾,返回值可能为去掉结尾斜杠的路径字符串
import os

path = 'C:\\Windows\\User'
print(os.path.dirname(path))

#-> C:\Windows


path = 'C:\\Windows\\User\\'
print(os.path.dirname(path))

#-> C:\Windows\User

os.path.exists(path)

参数:

  • path:需要检查的路径字符串,可以是文件或目录的路径

返回值:

  • True:路径存在
  • False:路径不存在

os.path.lexists(path)

参数:

  • path:需要检查的路径字符串,可以是文件或目录的路径

返回值:

  • True:路径存在
  • False:路径不存在

关键点:

  1. os.path.lexists() 和 os.path.exists() 的主要区别在于,前者会检查符号链接本身的存在性,而后者会检查链接指向的目标

os.path.expanduser(path)

参数:

  • 需要处理的路径字符串

返回值:

  • 返回一个字符串,将参数中开头部分的 ~~user 替换为当前用户的家目录并返回

关键点:

  1. 如果路径不是以 ~ 开头,返回值将与输入相同
import os

path = '~Ǣon\\Downloads'
print(os.path.expanduser(path))

#-> C:\Users\Ǣon\Downloads

os.path.expandvars(path)

参数:

  • path:需要处理的路径字符串

返回值:

  • 返回展开变量以后的路径。$name 或 ${name} 形式的子字符串被环境变量 name 的值替换

关键点:

  1. Windows 上,除了 $name 和 ${name} 外,还可以展开 %name%
import os

path = '${windir}\\System32\\CatRoot'
print(os.path.expandvars(path))

#-> C:\Windows\System32\CatRoot

os.path.getatime(path)

参数:

  • path:要查询的文件或目录的路径字符串

返回值:

  • 返回一个浮点数,表示最后访问时间的时间戳(UTC 时间)

os.path.getmtime(path)

参数:

  • path:要查询的文件或目录的路径字符串

返回值:

  • 返回一个浮点数,表示最后修改时间的时间戳(UTC 时间)

os.path.getctime(path)

参数:

  • path:要查询的文件或目录的路径字符串

返回值:

  • 返回一个浮点数,表示创建时间的时间戳(UTC 时间)

关键点:

  1. 在某些操作系统上(如 Linux),返回的可能是文件的元数据更改时间,而不是实际的创建时间

os.path.getsize(path)

参数:

  • path:要查询的文件或目录的路径字符串

返回值:

  • 返回一个整数,表示文件的大小(字节)

os.path.isabs(path)

参数:

  • path:要检查的路径字符串

返回值:

  • True:路径是绝对路径
  • False:路径不是绝对路径

os.path.isfile(path)

参数:

  • path:要检查的路径字符串

返回值:

  • True:路径存在并且是一个文件
  • False:路径不存在或不是文件

os.path.isdir(path)

参数:

  • path:要检查的路径字符串

返回值:

  • True:路径存在并且是一个目录
  • False:路径不存在或不是目录

os.path.islink(path)

参数:

  • path: 要检查的路径字符串

返回值:

  • True:路径存在并且是符号链接
  • False:路径不存在或不是符号链接

关键点:

  1. 如果 Python 运行时不支持符号链接,则总是返回 False

os.path.ismount(path)

参数:

  • path: 要检查的路径字符串

返回值:

  • True:路径存在并且是一个挂载点
  • False:路径不存在或不是一个挂载点

os.path.join(path, *paths)

参数:

  • path:基础路径,可以是一个文件夹或文件名
  • *paths:一个或多个要附加到基础路径的路径组件(子目录或文件名)

返回值:

  • path 和所有 *paths 成员的拼接

关键点:

  1. 如果某个部分为绝对路径,则之前的所有部分会被忽略并从该绝对路径部分开始拼接
  2. Windows,当遇到绝对路径部分时驱动器号将不会被重置。 如果某个部分位于不同驱动器或为绝对路径,则之前的所有部分会被忽略并且该驱动器号会被重置
import os

print(os.path.join('C:\\', 'User', 'Downloads\\demo.jpeg'))

#-> C:\User\Downloads\demo.jpeg


print(os.path.join('C:\\', 'User', 'D:\\Program Files (x86)', 'Tencent'))

#-> D:\Program Files (x86)\Tencent


print(os.path.join('/Desktop', '/Downloads', 'text.txt', 'demo.jpeg'))

#-> /Downloads\text.txt\demo.jpeg


print(os.path.join('C:\\', 'User' ,'\\Windows\\', 'Downloads'))

#-> C:\Windows\Downloads

os.path.normcase(path)

参数:

  • path:要标准化的路径字符串

返回值:

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

path = './Windows\\User/Downloads\\'
print(os.path.normcase(path))

#-> .\windows\user\downloads\

os.path.normpath(path)

参数:

  • path:要规范化的路径字符串

返回值:

  • 返回规范化后的路径。它会清理多余的斜杠,合并目录 (.) 和父目录 (..) 的引用
import os

path = 'C:\\Windows/User\\Downloads//..//Downloads\\demo.jpeg'
print(os.path.normpath(path))

#-> C:\Windows\User\Downloads\demo.jpeg


path = './Windows//User\\Downloads//.//Files\\demo.jpeg'
print(os.path.normpath(path))

#-> Windows\User\Downloads\Files\demo.jpeg

os.path.relpath(path, start=os.curdir)

参数:

  • path:表示要转换为相对路径的目标路径字符串
  • start:表示起始路径,默认为当前工作目录

返回值:

  • 返回一个字符串,表示从起始路径到目标路径的相对路径
import os

path = 'C:\\Windows\\User\\Downloads\\Files\\demo.jpeg'
start = 'C:\\Windows\\User\\Downloads'
print(os.path.relpath(path, start))

#-> Files\demo.jpeg

os.path.samefile(path1, path2)

参数:

  • path1:第一个路径字符串
  • path2:第二个路径字符串

返回值:

  • True:如果 path1 和 path2 指向同一个文件或目录
  • False:如果 path1 和 path2 不指向同一个文件或目录

关键点:

  1. 确保两个路径都存在,否则可能会抛出异常
import os

path1 = './Files\\../Files\\text.txt'
path2 = './Files\\text.txt'
print(os.path.samefile(path1, path2))

#-> True

os.path.sameopenfile(fp1, fp2)

参数:

  • fp1:第一个文件对象
  • fp2:第二个文件对象

返回值:

  • True:如果 fp1 和 fp2 指向同一个文件
  • False:如果 fp1 和 fp2 不指向同一个文件
import os

fp1 = open('./text.txt', 'r')
fp2 = open('./text.txt', 'r')
print(os.path.sameopenfile(fp1.fileno(), fp2.fileno()))

#-> True

os.path.samestat(stat1, stat2)

参数:

  • stat1:第一个 os.stat_result 对象
  • stat2:第二个 os.stat_result 对象

返回值:

  • True:如果两个状态对象指向同一个文件
  • False:如果两个状态对象不指向同一个文件
import os

stat1 = os.stat('./text.txt')
stat2 = os.stat('./text.txt')
print(os.path.samestat(stat1, stat2))

#-> True

os.path.split(path)

参数:

  • path:要分割的路径字符串

返回值:

  • 返回一个元组 (directory, filename)
    • directory:路径的目录部分
    • filename:路径的文件名部分(包括扩展名)
import os

path = './User\\Downloads\\Files\\demo.jpeg'
print(os.path.split(path))

#-> ('./User\\Downloads\\Files', 'demo.jpeg')

os.path.splitdrive(path)

参数:

  • path:要分割的路径字符串

返回值:

  • 返回一个元组 (drive, tail)
    • drive:挂载点或空字符串
    • tail:剩余的路径部分

关键点:

  1. 在所有情况下,drive + tail 都与 path 相同
import os

path = 'D:\\Program Files (x86)\\Tencent'
print(os.path.splitdrive(path))

#-> ('D:', '\\Program Files (x86)\\Tencent')

os.path.splitroot(path)

参数:

  • path:要分割的路径字符串

返回值:

  • 返回一个元组 (drive, root, tail)
    • drive:设置名或挂载点
    • rootdrive 之后的分隔符的字符串
    • tailroot 之后的所有内容
import os

path = 'D:\\Program Files (x86)\\Tencent'
print(os.path.splitroot(path))

#-> ('D:', '\\', 'Program Files (x86)\\Tencent')

os.path.splitext(path)

参数:

  • path:要分割的文件路径字符串

返回值:

  • 返回一个元组 (root, ext)
    • root:文件名部分,不包括扩展名
    • ext:文件的扩展名(包括前导点 .

关键点:

  1. 如果路径没有扩展名,返回的扩展名部分将是空字符串
import os

path = './User\\Downloads\\Files\\demo.jpeg'
print(os.path.splitext(path))

#-> ('./User\\Downloads\\Files\\demo', '.jpeg')

os.path.supports_unicode_filenames

返回值:

  • True:表示支持 Unicode 文件名
  • False:表示不支持 Unicode 文件名
import os

print(os.path.supports_unicode_filenames)

#-> True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值