自学内容网 自学内容网

Python常用OS库之path模块学习

学习python没有太多捷径,有也只有技巧,更重要的是要多学多练,个人觉得练更重要,读万卷书不如行万里路。编程是一门技能,所以除了看还要多实践,写得多了自然也就有了路。

如果看全部的标准库文档,可以访问这个链接 os --- 多种操作系统接口 — Python 3.12.3 文档

接下来就来敲敲OS库下的path方法,这里只是记录一下,搬运工作,加深印象。那就开始吧。

os.path常用方法

一、os.path.abspath(path)-->返回路径path的绝对路径

import os
os.path.abspath('AF')
#-->'D:\\pyhon_learn\\AF'

二、os.path.basename(path)-->返回路径path的基本名称。这是将path传入函数split()之后,返回的一对值中的第二个元素,听起来怪怪的,那就从代码上来看吧。从代码上看,如果路径到的是目录则返回目录名,如果路径是文件的,则返回文件名

os.path.basename('D:\\pyhon_learn\\AF\china.txt')
#-->'china.txt'

os.path.basename('D:\\pyhon_learn\\AF')
#-->'AF'

三、os.path.commonpath(paths)-->接受包括多个路径的序列paths,返回paths的最长公共子路径。如果paths同时包含绝对路径和相对路径或paths在不同的驱动器上,或paths为空,则抛出ValueError异常,什么意思呢,还是看代码吧

paths=[
    'D:\pyhon_learn\AF',
    'D:\pyhon_learn\AF\ckpoints',
    'D:\pyhon_learn\learn1'
]
os.path.commonpath(paths)
#-->'D:\\pyhon_learn'

可以看到返回的是数据组最大的公共路径,如果没有公共路径,则会报ValueError异常 

paths=[
    'D:\pyhon_learn\AF',
    'D:\pyhon_learn\AF\ckpoints',
    'D:\pyhon_learn\learn1',
    'E:\abc'
]
os.path.commonpath(paths)
#-->ValueError Traceback (most recent call last)
......
ValueError: Paths don't have the same drive

四、os.path.commonprefix(list)-->接受包含多个路径的列表,返回所有路径的最长公共前缀(这个是逐字比较的),如果列表为空,则返回空字符串(''),其实这个获取的是两个路径下,从头开始最大的相同数,返回回来的有可能不是一个正常的路径

paths=[
    'D:\pyhon_learn\AF\AC',
    'D:\pyhon_learn\AC\AB',
]
os.path.commonprefix(paths)
#-->'D:\\pyhon_learn\\A'

五、os.path.dirname(path) -->返回路径path的目录名称,这个跟os.path.basename(path)取的部分相反,两则合起来就是os.path.split() 

os.path.dirname('D:\\pyhon_learn\\AF\china.txt')
#-->'D:\\pyhon_learn\\AF'

六、os.path.exists(path)-->如果path指向一个已存在的路径或已打开的文件描述符,返回True,对于失效的符号链接,返回False。在某些平台,比如linux,如果使用os.stat()查询到目标文件没有执行权限,即使path确实存在,本函数也可能返回False,也就是说,exists判断True的条件是真实存在且可以被使用的文件才行。

os.path. exists('D:\\pyhon_learn\\AF\china.txt')
#-->True
os.path. exists('D:\\pyhon_learn\\AF\a.txt')
#-->False

七、os.path.lexists(path)-->这个长得真像os.path.lexists(path)就是只多了一个l。两些有何区别呢,主要的区别在于,exists()会自动判断失效的文件链接。如果检查的文件是一个软链接,但这个软连接指向的文件被删除了,会返回False。而lexists()不会做这个检查,只要软连接存在,即使它指向的文件不存在,也返回True。不好记怎么办,就这么想,这个不是懒得去检查吗,多了个l-->lan懒这么记就好了。软链接什么鬼?实际上可以理解window上的快捷图标,就清楚了,一个道理。

八、os.path.expanduser(path)-->用于将路径字符串中的扩展为用户的主目录。它的作用是提供跨平台的路径展开功能,使得路径可以在不同的操作系统上正确地解析。

怎么理解呢?就是在不同平台上,python对波浪线(~)解析为不同的主目录,在window上解析window能理解的,linux解析为linux能理解的,上代码看看,比如说我在window上有文档目录为path = "~/Documents/1.txt",那么执行后就变成了'C:\\Users\\cks/Documents/1.txt',在linux上可能就会变成'Home/Documents/1.txt',

path = "~/Documents/1.txt"
expanded_path = os.path.expanduser(path)
#-->'C:\\Users\\cks/Documents/1.txt'

九、os.path.expandvars(path)用于展开给定路径中的环境变量。它用环境变量name的值替换给定路径中。如果给定的路径包含变形的环境变量名或不存在的环境变量,那么os.path.expandvars()方法将保持不变。

expanded_path = os.path.expandvars("%JAVA_HOME%")
#-->'C:\\Program Files\\Java\\jdk1.8.0_201'

看得有点懵,实际就是传一个环境变量的key,系统给你返回环境变量的key对应的value值。

十、os.path.getatime(path)-->返回path的最后访问时间。为纪元秒数,纪元秒数是啥1970年1月1日零时开始算的时间,简单理解为返回了一个时间戳就好了。

os.path. getatime('D:\\pyhon_learn\\AF\china.txt')
#-->1712659286.8138032

十一、os.path.getmtime(path)-->返回path的最后修改时间。

十一、os.path.getctime(path)-->返回path的创建时间(window),unix是最后的修改时间

十二、os.path.getsize(path)-->返回path的大小,以字节为单位。如果文件不存在或不可访问,则抛出OSerror异常。

os.path.getsize('D:\\pyhon_learn\\AF\AC\china.txt')
#-->21

十三、os.path.isabs(path)-->如果是绝对路径则返回True

os.path.isabs('D:\\pyhon_learn\\AF\AC\china.txt')
#-->True

十四、os.path.file(path)-->是否是一个常规文件,是则True,否则False,china.txt是真文件,1.txt是快捷方式

os.path.isfile('D:\\pyhon_learn\\AF\AC\china.txt')
#-->True
os.path.isfile('D:\\pyhon_learn\\AF\AC\1.txt')
#-->False

十五、os.path.dir(path)-->是否是一个目录,是则True,否则False

os.path.isdir('D:\\pyhon_learn\\AF')
#-->True
os.path.isdir('D:\\pyhon_learn\\AG')
#-->False

十六、os.path.isjunction(path)-->Return True 如果 path 指向的 现有 目录条目是一个连接点。 则当连接点在当前平台不受支持时将总是返回 False。在 3.12 版本加入.这个暂时不知道怎么使用,后面再来补充

十七、os.path.islink(path)-->检查目录条目是不是一个符号链接,是则返回True,否刚False

十八、os.path.join(path*paths) -->智能地合并一个或多个路径部分。 返回值将是 path 和所有 *paths 成员的拼接,其中每个非空部分后面都紧跟一个目录分隔符,最后一个除外。

path1 = 'D:\\pyhon_learn'
path2 = 'AF\AC'
path3 = '1.txt'

os.path.join(path1,path2,path3)
#-->'D:\\pyhon_learn\\AF\\AC\\1.txt'

十八、os.path.normcase(path)

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

os.path.normcase('D:\pyhon_learn\AF\AC\1.txt')
#-->'d:\\pyhon_learn\\af\\ac\x01.txt'

十九、os.path.realpath(path*strict=False)-->返回指定文件的规范路径,消除路径中存在的任何符号链接(如果操作系统支持),翻译一下,比如你现在的工作目录是“D:\\pyhon_learn\\AF那么你调用 这个方法后返回的路就会是D:\\pyhon_learn\\AF\\AF\2.txt,看代码

#当前工作目录是D:\\pyhon_learn\\AF
os.path.realpath('./AF/2.txt')
#-->D:\\pyhon_learn\\AF\\AF\\2.txt

二十、os.path.split(path)将路径 path 拆分为一对,即 (head, tail),看代码

(dirname,basename) = os.path.split('D:\\pyhon_learn\\AF\china.txt')
#dirname -->D:\\pyhon_learn\\AF
#basename -->china.txt


原文地址:https://blog.csdn.net/benetan/article/details/137591455

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!