首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文去掌握python 中pathlib库

一文去掌握python 中pathlib库

作者头像
雷子
发布于 2022-05-21 03:17:33
发布于 2022-05-21 03:17:33
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

在python中,我们知道常用的路径的是os模块,这里给大家介绍一个新的模块-pathlib。

相比于老式的 os.path 有几个优势:

老的路径操作函数管理比较混乱,有的是导入 os, 有的又是在 os.path 当中,而新的用法统一可以用 pathlib 管理。

老用法在处理不同操作系统 win,mac 以及 linux 之间很吃力。换了操作系统常常要改代码,还经常需要进行一些额外操作。

老用法主要是函数形式,返回的数据类型通常是字符串。但是路径和字符串并不等价,所以在使用 os 操作路径的时候常常还要引入其他类库协助操作。新用法是面向对象,处理起来更灵活方便。

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

我们大概的去看一些操作

Path.cwd 获取当前文件夹路径

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pathlib import Path
# 1.可以直接调用类方法.cwd()
print(Path.cwd())  
# 2.也可以实例化后调用
p = Path('./')
print(p.cwd())

获取当前文件路径

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pathlib import Path
# 当前文件路径
p = Path(__file__)
print(p)

获取 Path 对象绝对路径

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = Path('data.json')
print(p)  # data.json 对象
print(p.absolute())#绝对路径
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pathlib import Path
# 当前文件路径
p = Path(__file__)
print(p.absolute())   # 获取绝对路径
print(p.resolve())    # 获取绝对路径
print(p.name)   # 获取文件名称 'a1117.py'
print(p.stem)    # 只要文件名,不要后缀 a1117
print(p.suffix)  # 获取文件 后缀.py
print(p.suffixes)  # 文件所有的猴子 ['.py']
print(p.parts)  # 拆分路径
获取上层,上上层目录:
print(p.parent)  #父目录
print(p.parent.parent)  # 父目录的父目录
print(p.parents)  # 所有的父级 <WindowsPath.parents>
print(p.anchor)  # 目录前面的部分 

获取用户home目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(Path.home())

判断文件,文件夹

is_file()判断是不是文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(Path.cwd().is_file())
p = Path('./data.json')
print(p.is_file())  # True

is_dir() 判断是否是文件夹

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(Path.cwd().is_dir())  # True
# 2.也可以实例化后调用
p = Path('./data.json')
print(p.is_dir())  # False

exists() 判断文件 或文件夹是否存在

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# exists() 判断是否存在
p = Path('./data.json')
print(p.exists())  # True or False

joinpath 拼接目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pathlib import Path
# 当前文件路径
p = Path('./')
print(p.absolute())  #当前绝对路径
print(p.joinpath('data.json'))  # 路径拼接data.json

iterdir()遍历文件目录

比如在当前脚本的 files 目录有以下文件夹和子文件

.iterdir() 遍历某个目录下的所有路径(文件和子目录)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = Path('files')
for i in p.iterdir():
    print(i.absolute())

如果只需获取文件夹,可以加个判断.is_dir()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = Path('files')
print([i for i in p.iterdir() if i.is_dir()])

也可以用.is_file获取文件对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = Path('files')
print([i for i in p.iterdir() if i.is_file()])

glob() 和 rglob() 模式匹配(正则表达式)

使用模式匹配(正则表达式)匹配指定的路径。glob 只会匹配当前目录下, rglob 会递归所有子目录 比如在当前脚本的 files 目录有以下文件夹和子文件

glob 只会匹配当前目录下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pathlib import Path

p = Path('files')
# glob 只会遍历查找当前目录
print(p.glob('*.txt'))  # <generator object Path.glob at 0x000001A44565A518>
print([i for i in p.glob('*.txt')])  # [WindowsPath('files/username.txt')]
print([i for i in p.glob('*.yml')])  # []

rglob 会递归所有子目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pathlib import Path
p = Path('files')
# glob 只会遍历查找当前目录
print(p.rglob('*.txt'))  # <generator object Path.glob at 0x000001A44565A518>
print([i for i in p.rglob('*.txt')]) 
print([i for i in p.rglob('*.yml')])

match() 检查路径是否符合规则

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = Path('data.json')
# math 检查匹配规则
print(p.match('*.json'))  # True

创建文件操作

touch() 创建文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = Path('xx.json')
p.touch()   # 创建一个xx.json

mkdir() 创建目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = Path('leizi')
p.mkdir()

递归创建目录mkdir(parents=True)

删除文件操作

删除目录非常危险,并且没有提示,一定要谨慎操作

rmdir() 一次只删除一级目录,且当前目录必须为空

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pathlib import Path
p = Path('nam')
p.rmdir()

unlink() 删除文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = Path('files/username.txt')
p.unlink()

文件读写操作

pathlib 对读取和写入进行了简单的封装,不再需要重复去打开文件和管理文件的关闭了。

read_text() 读取文本

read_bytes() 读取 bytes

write_text() 写入文本

write_bytes() 写入 tytes

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
解决Python中的“没有那个文件”错误:原因分析与实用指南
在Python编程中,遇到“没有那个文件”错误(FileNotFoundError)是常见的问题之一。这个错误通常发生在尝试访问一个不存在的文件或目录时,导致脚本无法继续执行。本文将详细分析这个错误的原因,并提供实用的解决方案和指南,帮助新手朋友更好地理解和解决这一问题。
富贵软件
2025/08/28
1030
解决Python中的“没有那个文件”错误:原因分析与实用指南
python pathlib模块的基本使用和总结
相比常用的 os.path而言,pathlib 对于目录路径的操作更简介也更贴近 Pythonic。但是它不单纯是为了简化操作,还有更大的用途。
叶庭云
2020/09/17
3.1K0
python   pathlib模块的基本使用和总结
python笔记72 - 使用pathlib替代os.path
如果你还在为操作文件路径烦恼,不会使用os.path模块,那么是时候试试pathlib了。
上海-悠悠
2022/03/03
9280
python笔记72 - 使用pathlib替代os.path
你还在用 os.path?快来感受一下 pathlib 给你带来的便捷吧!
pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。路径类在纯路径之间划分,纯路径提供纯粹的计算操作而没有I / O,以及具体路径,它继承纯路径但也提供I / O操作。
崔庆才
2018/12/17
9511
python 文件操作新姿势 pathlib模块的详细使用
相比常用的 os.path而言,pathlib 对于目录路径的操作更简介也更贴近 Pythonic。但是它不单纯是为了简化操作,还有更大的用途。 pathlib 是Python内置库,Python 文档给它的定义是:The pathlib module – object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。
叶庭云
2022/05/09
7320
python 文件操作新姿势   pathlib模块的详细使用
python基础—pathlib模块
这里说下pathlib模块,只要python版本大于3.4 都自带标准库pathlib
dogfei
2020/07/31
4120
深度对比Python中4大文件处理库(os、shutil、glob、pathlib)
os库应该是使用频率最高的一个文件处理库,但是不得不说Python中还有几个其它的文件处理库,像shutil库、glob库、pathlib库,它们可以说是相互补充,有着自己好用的方法。黄同学亲切的将它们合称为Python文件处理库的四大天王。
快学Python
2021/12/07
8.9K0
深度对比Python中4大文件处理库(os、shutil、glob、pathlib)
附实战代码|告别OS模块,体验Python文件操作新姿势!
相比常用的 os.path而言,pathlib 对于目录路径的操作更简介也更贴近 Pythonic。但是它不单纯是为了简化操作,还有更大的用途。
刘早起
2020/11/23
6230
附实战代码|告别OS模块,体验Python文件操作新姿势!
求求你,别用 os.path 了
前段时间,在使用新版本的 Django 时,我发现了 settings.py 的第一行代码从
somenzz
2021/05/18
7310
求求你,别用 os.path 了
【Python自动化办公】分享几个好用到爆的模块,建议收藏!
今天小编来给大家推荐几个在自动化办公领域当中非常好用的Python模块,可以帮助大家在工作当中及大地提高效率,避免重复机械化地操作流程。
用户6888863
2023/03/01
3860
【Python自动化办公】分享几个好用到爆的模块,建议收藏!
一分钟学一个 Python 标准库之 Pathlib
相对于 os.path 来说,Pathlib 极大地简化了路径相关的操作。举个例子来说:
爬虫技术学习
2023/03/06
4110
一分钟学一个 Python 标准库之 Pathlib
用pathlib进行Python中的文件路径处理
本文介绍Python中的文件路径处理方法,从字符串连接、os.path.join()到Python3中处理文件路径的简单方法:pathlib。
MeteoAI
2019/07/24
4.3K0
PKW: namedtuple 和 pathlib 简介(第 5 期)
通过工厂函数 collections.namedtuple,可以构造出带有字段名的元组,即为具名元组。 namedtuple 是元组的升级版本,通过 namedtuple 函数创建的是一个元组的子类。而且具名元组和普通元组所消耗的内容是相同的,既可以通过 index 来访问具名元组的元素,也可以使用具名元组中每个字段的名称来访问数据。
周萝卜
2019/08/16
4380
Python - 超好用的第三方库pathlib,快速获取项目中各种路径
之前曾介绍过Python的os库详细使用方式,具体可看看这篇博文:https://www.cnblogs.com/poloyy/p/12341231.html
小菠萝测试笔记
2020/06/09
1.2K0
Python - 超好用的第三方库pathlib,快速获取项目中各种路径
小说python的路径操作
在日常编码中,常常会有这些操作 在当前目录或用户目录下新建一个配置文件, 获取一个文件的路径或上级目录 这些都涉及路径操作 相信大家都使用过`os.path`来处理过,这个痛苦我想"谁用谁知道吧" 今天的主角`pathlib`就是来解决痛苦的... pathlib简介 pathlib是跨平台的、面向对象的路径操作库, pathlib就是对os.path进行了封装,提供了一个便捷的,面向对象的操作方式, 相对os.path作为string对象需要进行众多繁琐的操作, 它才真正是for humans pyth
用户2196567
2018/07/02
9380
pathlib:Python面向对象的文件路径处理
Pathlib库提供了一个面向对象的API来解析,建立,测试和处理文件名和路径,而不是使用底层字符串操作。
luckpunk
2023/09/28
5430
pathlib:Python面向对象的文件路径处理
真香!Python十大文件骚操作!!
日常对于批量处理文件的需求非常多,用Python写脚本可以非常方便地实现,但在这过程中难免会和文件打交道,第一次做会有很多文件的操作无从下手,只能找度娘。
Sam Gor
2020/12/16
1K0
pathlib的使用,用于替换os包
Python中的pathlib模块很好地展示了面向对象编程的特点,主要通过以下几个方面来体现:
renhai
2024/05/18
2390
python遍历文件夹os.path与pathlib
首先我们来一个需求,这个函数接受文件夹的名称作为输入参数,返回该文件夹中文件的路径,以及其包含文件夹中文件的路径。
Tim在路上
2020/08/05
2.3K0
Python基础-文件批量操作
Path.cwd() : 获取当前工作目录;f.exists():判断某个实例是否存在; f.is_dir():判断该路径是否是目录; f.is_file():判断该路径是否是文件; f.stat().st_size: 得到某个文件的大小;f.absolute(): 获得绝对路径; f.parent(): 获取路径的上级路径; f.name: 获取文件名;f.stem: 获取文件前缀;f.suffix: 获取文件后缀。
凑齐六个字吧
2024/07/26
1730
推荐阅读
相关推荐
解决Python中的“没有那个文件”错误:原因分析与实用指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验