赶紧用pathlib,一刻也不要耽误

赶紧用pathlib,一刻也不要耽误

 

在python当中,如果你想控制路径,基本上绕不开os.path。

我希望看完这篇文章以后,熟练使用python的你能立刻开始使用pathlib模块,一刻也不要耽误。

pathlib相对于os.path有以下优势:

◆ pathlib导入更加清晰;

◆ 采用面向对象编程,能同时存储更多状态,os.path返回的通常只有一个字符串;

◆ pathlib使用更简单

一、获取路径相关信息

pathlib会把路径相关信息都存在一个Path的核心类里面,比如用户名,后缀名,上层目录,文件创建时间,文件大小等等。

这些os.path是没有办法一次性都给我们的,因为os.path调用的函数几乎都是返回字符串格式,不能像Path对象这样保存状态。

01 获取当前文件路径

这种操作方式可能会包含相对路径信息。

赶紧用pathlib,一刻也不要耽误

 

02 当前文件夹路径

赶紧用pathlib,一刻也不要耽误

 

03 获取当前文件和文件夹的元信息

赶紧用pathlib,一刻也不要耽误

 

04 Path('.') 这种方式可以包含相对路径 ../doc 等

如果要获取绝对路径要使用resolve获取绝对路径

赶紧用pathlib,一刻也不要耽误

 

如果路径不存在, 是不会抛出异常的。

如果想抛出异常,可以设置参数strict设为True,抛出FileNotFoundError

赶紧用pathlib,一刻也不要耽误

 

05 获取父目录。

这是os.path最被人诟病的一点,你需要不停的通过os.path.dirname()去获取父目录,层级多了,心都碎了。

在pathlib里,因为采用的是对象形式,可以直接通过parent属性获取父目录,父目录同时也是一个Path对象,照样可以用parent去获取目录

赶紧用pathlib,一刻也不要耽误

 

06 如果需要不停的返回上一级目录,不停的parent属性也会让人不厌其烦。

pathlib提供了一种更灵活的机制让你去获取高层父目录, 就是parents属性。

parents会把从根目录开始的所有层级都保存起来,直接通过索引获取对应层级就可以了

赶紧用pathlib,一刻也不要耽误

 

这里有一点非常遗憾,pathlib没有支持逆向索引,也就是说不能通过 parents[-2]去达到和
current_path.parent.parent相同的效果。

在实际应用中,这种场景用得还是挺多的,需要通过某个文件获取上层路径,上上层路径

赶紧用pathlib,一刻也不要耽误

 

提供一种封装思路:

赶紧用pathlib,一刻也不要耽误

 

还有一种思路,重写源码中的 __getitem__ 方法,这里不做深入阐述。

07 获取文件名称

赶紧用pathlib,一刻也不要耽误

 

08 获取文件后缀名

赶紧用pathlib,一刻也不要耽误

 

09 获取不含后缀名的文件名

赶紧用pathlib,一刻也不要耽误

 

二、路径操作

01 with_name, 改变文件名

生成新路径,实际文件不发生变化

赶紧用pathlib,一刻也不要耽误

 

02 with_suffix, 改变后缀名

赶紧用pathlib,一刻也不要耽误

 

03 路径拼接

pathlib提供了和os.path.join()类似的路径拼接方式:

赶紧用pathlib,一刻也不要耽误

 

更重要的是,他提供了一种更直观的方式 /:

赶紧用pathlib,一刻也不要耽误

 

这种方式的实现原理学过测试开发课程的同学应该很容易想到,定义一个除法运算的魔术方法就可以。

推荐一个软件测试学习交流群:785128166,群里有分享的视频,面试指导,测试资料,还有思维导图、群里有视频,都是干货的,你可以下载来看。主要分享测试基础、接口测试、性能测试、自动化测试、TestOps架构、Jmeter、LoadRunner、Fiddler、MySql、Linux、简历优化、面试技巧以及大型测试项目实战视频资料。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

公众号:程序员二黑, 关注后免费领取海量学习资料。

好东西要和朋友一起分享哦
 

上一篇:oracle数据库dba_hist等视图中的Delta相关字段介绍


下一篇:Python3之文件