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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的“外卖点餐系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“外卖点餐系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能图 用户功能界面 订单管理界面 配送单管…

js禁用所有的input

要在JavaScript中禁用所有的input元素,您可以使用document.querySelectorAll方法来选择所有的input元素,然后使用一个循环来为它们设置disabled属性。以下是实现这一功能的示例代码: // 选择所有的input元素 const inputs document.querySel…

Python 字典组成的数组怎么进行去重?

你知道吗?如果数组是字典组成的,直接对数组内的字典采用 set 的方式进行去重,会报错: test [{"a": 1}, {"a": 1}, {"a": 3}, {"b": 4}] test list(set(test)) >>> TypeError…

设计模式——迭代器模式15

迭代器模式提供一种方法访问一个容器对象中各个元素&#xff0c;而又不需暴露该对象的内部细节。 设计模式&#xff0c;一定要敲代码理解 抽象迭代器 /*** 迭代抽象* */ public interface Iterator<A> {A next();boolean hasNext(); }迭代器实现 /*** author ggbond*…

极市平台 | 卫星图像公开数据集资源汇总

本文来源公众号“极市平台”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;卫星图像公开数据集资源汇总 本文收集整理了卫星图像的开源数据集&#xff0c;多用于图像分割方向&#xff0c;希望能给大家的学习带来帮助。 1 水体卫…

Vue 3中的反向代理 和如何在服务器配置反向代理

如何在Vue 3项目中配置反向代理&#xff0c;让前端开发变得爽到爆&#xff01;还有个小插曲&#xff0c;Vite为我们提供了更简单的方式&#xff0c;就像找对象一样直接。 首先&#xff0c;我们来谈谈反向代理是什么。简单来说&#xff0c;反向代理就像是前端和后端之间的婚姻介…

DHCP是什么意思 路由器中DHCP服务器怎么设置?

概述 DHCP是什么意思&#xff1f;很多朋友在路由器设置中&#xff0c;都会看到有一项“DHCP服务器”设置功能&#xff0c;而很多朋友对这个功能不太了解&#xff0c;也不知道怎么设置。其实&#xff0c;对于普通用户来说&#xff0c;无需去单独设置路由器DHCP服务器功能&#…

CMake快速入门

文章目录 目的环境准备快速入门总结 目的 C/C的代码可以直接使用编译工具链进行编译&#xff0c;这种方式文件一多就不方便了。也可以编写 Makefile 然后使用 make 进行编译&#xff0c;当然写 Makefile 其实也挺繁琐。对于大型项目比较流行的是编写 CMakeLists.txt 然后使用 …

【C++基础】chrono

1、chrono介绍 chrono 是 C 标准库中的一个头文件&#xff0c;提供了处理日期、时间、时钟等时间相关操作的功能。它在 C11 标准中引入&#xff0c;提供了更方便、更强大的时间处理功能。 1.1 类&#xff1a; std::chrono::duration: 代表时间段&#xff0c;可以表示一段时间…

C/C++字符串操作

C/C对字符串的操作提供了丰富的函数库&#xff0c;这些函数可以用于创建、修改、比较和搜索字符串等。以下是一些常用的字符串操作函数及其使用说明&#xff1a; C语言中的字符串操作 在C语言中&#xff0c;字符串通常以字符数组的形式存在&#xff0c;并以空字符&#xff08…

SpringBoot中注册Bean的方式汇总

文章目录 ComponentScan Componet相关注解BeanImportspring.factories总结Configuration和Component的主要区别&#xff1f;Bean是不是必须和Configuration一起使用&#xff1f;Import导入配置类有意义&#xff1f;出现异常&#xff1a;java.lang.NoClassDefFoundError: Could…

大语言模型总结整理(不定期更新)

《【快捷部署】016_Ollama&#xff08;CPU only版&#xff09;》 介绍了如何一键快捷部署Ollama&#xff0c;今天就来看一下受欢迎的模型。 模型简介gemmaGemma是由谷歌及其DeepMind团队开发的一个新的开放模型。参数&#xff1a;2B&#xff08;1.6GB&#xff09;、7B&#xff…

TCP协议--传输机制

TCP协议原理 TCP协议是对数据传输提供的一个管控机制&#xff0c;主要体现在可靠和效率两个方面&#xff0c;即在保证数据可靠传输的情况下尽可能的提高效率 可靠传输机制 确认应答机制 向对方发送一个数据报&#xff0c;对方要返回一个确认应答的数据报 实现的方式&#x…

文心一言 VS 讯飞星火 VS chatgpt (236)-- 算法导论17.3 2题

二、使用势能法重做练习17.1-3。练习17.1-3的内容是&#xff1a;假定我们对一个数据结构执行一个由 n 个操作组成的操作序列&#xff0c;当 i 严格为 2 的幂时第 i 个操作的代价为 i &#xff0c;否则代价为1。使用聚合分析确定每个操作的摊还代价。如果要写代码&#xff0c;请…

JAVA实现人工智能,采用框架SpringAI

Spring AI介绍 Spring AI是AI工程师的一个应用框架&#xff0c;它提供了一个友好的API和开发AI应用的抽象&#xff0c;旨在简化AI应用的开发工序&#xff0c;例如开发一款基于ChatGPT的对话应用程序。 项目地址&#xff1a;https://github.com/spring-projects-experimental/sp…

AGV小车导航避障雷达SE-0533(CNS-LS05C)激光传感器RS232|RS485|CAN BUS连线说明

AGV小车导航避障雷达SE-0533(CNS-LS05C)激光传感器广泛应用到AGV小车&#xff0c;RGV小车&#xff0c;无人叉车、搬运机器人等领域。本文重点介绍AGV小车导航避障雷达SE-0533(CNS-LS05C)激光传感器RS232|RS485|CAN BUS连线说明。 一、线序定义 1、传感器线缆线序定义 SE-053…

用栈来模拟队列

思路&#xff1a;首先栈是先进后出&#xff0c;队列是先进先出&#xff0c;所以用两个栈来模拟队列&#xff0c;一个用来进&#xff0c;一个用来出&#xff0c;用来进的再弹给用来出的便是队列的顺序了&#xff0c;具体代码如下 class MyQueue { public: stack<int> sa…

分层风格的软件架构设计概念及其实际应用

摘要 分层风格的软件架构是一种将系统功能分解成多个层次的设计模式&#xff0c;每个层次负责特定的功能&#xff0c;层与层之间通过定义良好的接口进行交互。这种架构风格广泛应用于多种软件系统&#xff0c;如企业应用、操作系统和网络协议等。本文将探讨分层架构的基本概念…

C++引用和右值引用

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

postgis导入shp数据时“dbf file (.dbf) can not be opened.“

作者进行矢量数据导入数据库中出现上述报错 导致报错原因 导入的shp文件路径太深导入的shp文件名称或路径中有中文将需要导入数据的shp 文件、dbf 文件、prj 等文件放在到同一个文件夹内&#xff0c;且名字要一致&#xff1b;导入失败&#xff1a; 导入成功&#xff1a;