为了账号安全,请及时绑定邮箱和手机立即绑定

Python Pathlib与os浅析对比

标签:
Python

我们在前面学习对文件路径操作的os.path模块pathlib模块,不熟悉的小伙伴可以前往学习一下。

  • pathlib 模块从 python3.4 开始,到 python3.6 已经比较成熟。

  • 对比老式的 os.path,pathblib有几个优势:

    1. 传统操作导入模块不统一。 既可以导入 os,又可以导入 os.path,而新的用法统一可以用 pathlib 管理。

    2. 传统操作在不同操作系统之间切换麻烦。  换了操作系统常常要改代码,还经常需要进行一些额外操作。

    3. 返回的数据类型不同。

    (1)传统主要是函数形式,返回的数据类型通常是字符串。

    (2)但是路径和字符串并不等价,所以在使用 os 操作路径的时候常常还要引入其他类库协助操作。

    (3)Pathlib模块是面向对象,处理起来更灵活方便。

    4.  pathlib 简化了很多操作,用起来更轻松

本期,我们将学习一下,Pathlib模块与os模块方法进行对比学习,看看同样操作,os模块与Pathlib模块方法的差异点

🎵🎵废话不多说,我们来学习pathlib模块与os模块相关方法的对比吧,Let's go~

1. 获取当前路径方式

👉os模块: 使用os.getcwd()函数方法来获取当前路径

import os.path

Os = os.getcwd()

print("Os 路径为:",Os)

👉pathlib模块: 使用具体路径Path对象调用cwd()方法来获取当前路径

import pathlib


Pa = pathlib.Path()

print("Pa 路径",Pa.cwd())

https://img1.sycdn.imooc.com//6117c40a00010a6304510138.jpg

2. 获取上级/上上级目录

文件目录结构展示图:

https://img1.sycdn.imooc.com//6117c40c0001e09604150422.jpg

👉os模块: 使用os.path.dirname来嵌套调用获取上级及上上级目录路径

import os.path

print("os.path模块获取上层目录:",os.path.dirname(os.getcwd()))
print("os.path模块获取上上层目录:",os.path.dirname(os.path.dirname(os.getcwd())))

👉pathlib模块: 使用Path/PurePath对象调用parent属性来获取符级目录

import pathlib

Pa = pathlib.Path()

print("pathlib获取上层目录:",Pa.cwd().parent)
print("pathlib获取上上层目录:",Pa.cwd().parent.parent)

https://img1.sycdn.imooc.com//6117c40c0001744b04560149.jpg

3. 拼接目录

👉os模块: 使用join()方法嵌套调用dirname()方法。层层调用,不易阅读

import os.path


print("os,path模块拼接路径:",os.path.join(os.path.dirname(os.getcwd()),"New","test1.txt"))

👉pathlib模块: 使用parent属性后调用join()连接相关路径,简洁明了

import pathlib


Pa = pathlib.Path()

paths = ["New","test1.txt"]

print("pathlib模块路径拼接:",Pa.cwd().parent.joinpath(*paths))

https://img1.sycdn.imooc.com//6117c40c0001db2504490145.jpg

4. 创建文件夹并重命名

👉os模块: 创建多个层级下的文件名字,需要写复杂的嵌套

import os.path

# 创建 JueJin/Test目录
os.makedirs(os.path.join('JueJin', 'Test'), exist_ok=True)

# 将test.txt重命名为 JueJin/Tests.txt
os.rename('test.txt', os.path.join('JueJin', 'Tests.txt'))

👉pathlib模块: Path对象可以直接创建对应目录下,无需写嵌套式调用

import pathlib

# 创建 JueJin/Test目录
pathlib.Path("JueJin/Test").mkdir(parents=True,exist_ok=True)

# 将test.txt重命名为 JueJin/Tests.txt
pathlib.Path("test.txt").rename("Juejin/Tests.txt")

5. Pathlib方法图解

网传很火的一张Pathlib模块方法汇总图,简单直观,大家学习的时候可以看一下

https://img1.sycdn.imooc.com//6117c40d0001659807150914.jpg

6. os.path和pathlib对照表

https://img1.sycdn.imooc.com//6117c4520001d1fa07650665.jpg

https://img1.sycdn.imooc.com//6117c4660001f3c507630417.jpg

总结

本期,我们学习Pathlib模块os.path模块对操作系统路径操作方法进行对比差异

pathlib 模块较于os.path 模块提供的方法更加简单方便,提高我们代码简单和可维护

如果你的新项目可以直接用 3.6 以上,建议用 pathlib。

以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹🌹🌹🌹🌹✈️


作者:盆友圈的小可爱
链接:https://juejin.cn/post/6995877661222371359
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消