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)!