python好用的第三方库_Python - 超好用的第三方库pathlib,快速获取项目中各种路径...

前言

博主在学完os库之后,就开始投入使用了,在项目中我们一般需要让 路径可配置 ,什么意思?假设你现在有个项目A,里面有些变量存储了文件路径,如: project_path = C:\Users\user\Desktop\py\moocInterface ;想象下,当你换了个电脑,你的项目不在放在C盘下的时候,你这个变量是不是就失效了,此时你就要手动改路径,改来改去....维护成本极高;所以博主后面就用了os库去完成路径可配置,具体代码如下,大家完全可以复用的哈

首先,我的项目目录结构是这样的

1896874-20200307164057224-733198420.png

BaseSettings 文件存放的就是项目通用的常量,譬如项目路径 project_path = os.path.split(os.path.split(os.path.realpath(__file__))[0])[0]

当我想获取 config 文件夹下的 config.ini 时,我的变量就是 configIni_path = os.path.join(project_path, "config", "config.ini") ,以此类推~

可以看到,其实还是蛮长一行代码的,并且需要由内而外的阅读代码;

无独有偶,接触到了 pathlib 库之后,发现原来它有这么好用,并且可以完全替代 os.path

pathlib 的简单介绍

官方定义:Object-oriented filesystem paths(面向对象的文件系统路径)

官方推荐:pathlib是一个从3版本开始就能完全替代os.path的内置库,在python官网中这样说 "对于字符串的低级路径操作,您也可以使用该 os.path模块"

pathlib和os.path的比较

当需要找多个层级的目录路径时,通过 os.path 需要嵌套写法,如我上面的 project_path ,而 pathlib 可以提供链式写法,简洁明了

os.path 只用于处理路径,如果你想在获取到的路径下做一些事情(如:创建一个目录),你就需要用 os 模块,而 pathlib 可以一站式搞定,将在后面展开讲

从这开始,我们通过os.path和pathlib的比较他们的代码量和实现方式

获取当前文件路径

os模块获取当前文件路径

importos

v2=os.getcwd()#输出 F:\moocInterface

pathlib 获取当前文件路径

from pathlib importPath

v=Path.cwd()#输出 F:\moocInterafce

获取上层、上上层目录

os 获取上上层目录

importosprint(os.path.dirname(os.path.dirname(os.getcwd()))) #F:\

很明显用os的写法就是嵌套式调用

pathlib 获取上上层目录

from pathlib importPathprint(Path.cwd().parent.parent) #F:\

而用pathlib就是链式调用

拼接目录

场景:在当前目录的父级目录拼接 test 文件夹下的 test.txt

os 拼接目录

importos

os.path.join(os.path.dirname(os.getcwd()),"test","test.txt")

pathlib 拼接目录

from pathlib importPath

paths= ["test","test.txt"]

Path.cwd().parent.joinpath(*paths)

创建文件夹并重命名

os模块

importosimportos.path#创建 peoject/test目录

os.makedirs(os.path.join('project', 'test'), exist_ok=True)#将test.txt 重命名为 project/tests.txt

os.rename('test.txt', os.path.join('project', 'tests.txt'))

pathlib模块的Path对象

from pathlib importPath#创建 project/test目录

Path('project/test').mkdir(parents=True, exist_ok=True)#将test.txt 重命名为 project/tests.txt

Path('test.txt').rename('project/test.txt')

os和pathlib的对应关系

1896874-20200307204147745-495556785.png

pathlib的常用基本方法

Path.parents  #返回所有上级目录的列表

Path.parts#分割路径 类似os.path.split(), 不过返回元组

Path.root#返回路径的根目录

pathlib的常用基本方法

Path.is_dir()  #判断是否是目录

Path.is_dir()#是否是文件

Path.exists()#判断路径是否存在

Path.open()#打开文件(支持with)

Path.resolve()#返回绝对路径

Path.cwd()#返回当前目录

Path.iterdir()#遍历目录的子目录或者文件

Path.mkdir()#创建目录

Path.rename()#重命名路径

Path.unlink()#删除文件或目录(目录非空触发异常)

Path.joinpath()#拼接路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值