内容简介:之前曾介绍过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库去完成 路径可配置 ,具体代码如下,大家完全可以复用的哈
首先,我的项目目录结构是这样的
- 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模块获取当前文件路径
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的对应关系
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() # 拼接路径
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
白话机器学习算法
[新加坡] 黄莉婷、[新加坡] 苏川集 / 武传海 / 人民邮电出版社 / 2019-2 / 49.00元
与使用数学语言或计算机编程语言讲解算法的书不同,本书另辟蹊径,用通俗易懂的人类语言以及大量有趣的示例和插图讲解10多种前沿的机器学习算法。内容涵盖k均值聚类、主成分分析、关联规则、社会网络分析等无监督学习算法,以及回归分析、k最近邻、支持向量机、决策树、随机森林、神经网络等监督学习算法,并概述强化学习算法的思想。任何对机器学习和数据科学怀有好奇心的人都可以通过本书构建知识体系。一起来看看 《白话机器学习算法》 这本书的介绍吧!