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

栏目: IT技术 · 发布时间: 4年前

内容简介:之前曾介绍过Python的os库详细使用方式,具体可看看这篇博文:博主在学完os库之后,就开始投入使用了,在项目中我们一般需要让

前言

之前曾介绍过 Python 的os库详细使用方式,具体可看看这篇博文: https://www.cnblogs.com/poloyy/p/12341231.html

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

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

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

  1. BaseSettings  文件存放的就是项目通用的常量,譬如项目路径  project_path = os.path.split(os.path.split(os.path.realpath( __file__ ))[0])[0]  
  2. 当我想获取  config  文件夹下的  config.ini  时,我的变量就是  configIni_path = os.path.join(project_path, " config " , " config.ini " )  ,以此类推~
  3. 可以看到,其实还是蛮长一行代码的,并且需要由内而外的阅读代码;
  4. 无独有偶,接触到了  pathlib  库之后,发现原来它有这么好用,并且可以完全替代  os.path  

pathlib 的简单介绍

  • 官方定义:Object-oriented filesystem paths(面向对象的文件系统路径)
  • 官方推荐:pathlib是一个从3版本开始就能完全替代os.path的内置库,在python官网中这样说 "对于字符串的低级路径操作,您也可以使用该 os.path模块"

pathlib和os.path的比较

  1. 当需要找多个层级的目录路径时,通过  os.path  需要嵌套写法,如我上面的  project_path  ,而  pathlib  可以提供链式写法,简洁明了
  2. os.path  只用于处理路径,如果你想在获取到的路径下做一些事情(如:创建一个目录),你就需要用  os  模块,而  pathlib  可以一站式搞定,将在后面展开讲

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

获取当前文件路径

os模块获取当前文件路径

import os

v2 = os.getcwd()

# 输出 F:\moocInterface

pathlib 获取当前文件路径

from pathlib import Path

v = Path.cwd()

# 输出 F:\moocInterafce

获取上层、上上层目录

os 获取上上层目录

import os

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

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

pathlib 获取上上层目录

from pathlib import Path

print(Path.cwd().parent.parent)  # F:\

而用pathlib就是链式调用

拼接目录

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

os 拼接目录

import os

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

pathlib 拼接目录

from pathlib import Path

paths = ["test","test.txt"]
Path.cwd().parent.joinpath(*paths)

创建文件夹并重命名

os模块

import os
import os.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 import Path

# 创建 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的对应关系

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

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()  # 拼接路径

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

并行算法的设计与分析

并行算法的设计与分析

陈国良 / 2009-8 / 66.00元

第3版在修订版的基础上进行了大幅度的修订,新增加3章、重写3章,改写8章。《普通高等教育十一五国家级规划教材·并行算法的设计与分析(第3版)》系统深入地讨论了计算机领域中诸多计算问题的并行算法的设计和分析方法。在着重介绍各种并行计算模型上的常用和典型的并行算法的同时,也力图反映本学科的最新成就、学科前沿和发展趋势。 全书共分二十章,包括基础篇4章(绪论、设计技术、前缀计算、排序和选择网络),......一起来看看 《并行算法的设计与分析》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试