Python:pathlib模块
关于panthlib模块
pathlib模块提供表示文件系统路径的类,其语义适用于不同的操作系统。路径类被分为提供纯计算操作而没有 I/O 的纯路径,以及从纯路径继承而来但提供 I/O 操作的具体路径。

以下是一个映射了 os 与 PurePath/Path 对应相同的函数的表。
注意:尽管
os.path.relpath()和PurePath.relative_to()拥有相同的重叠的用例,但是它们语义相差很大,不能认为它们等价。
Tips:os模块的写法是函数式的,由内到外需要一层一层剥开,而pathlib模块是链式写法,从左到右理解,相较于从内到外理解更加清晰。
基础使用
列出子目录
>>> from pathlib import Path # 导入模块
>>> p = Path('.')
>>> [x for x in p.iterdir() if x.is_dir()]
[PosixPath('.pip'), PosixPath('.pki'), PosixPath('.ansible'), PosixPath('.ssh'), PosixPath('.cache')]
查询路径属性
>>> p = Path('.')
>>> p.exists() # 判断是否存在
True
>>> p.is_dir() # 判断是否为文件夹
True
>>> p.is_file() # 判断是否为文件
False
>>> p.is_absolute() # 判断是否为绝对路径
False
>>> path = Path('/tmp/aaa.txt')
>>> path.name # 获取文件名
'aaa.txt'
>>> path.stem # 获取文件名,不带后缀
'aaa'
>>> path.suffix # 获取文件后缀
'.txt'
>>> path.parent # 获取上级目录
PosixPath('/tmp')
>>> path.root # 获取根路径
'/'
>>> path.parts # 将路径分割成元祖
('/', 'tmp', 'aaa.txt')
>>> path.stat() # 获取文件信息
os.stat_result(st_mode=33188, st_ino=134896383, st_dev=64768, st_nlink=1, st_uid=0, st_gid=0, st_size=4, st_atime=1645078071, st_mtime=1645078071, st_ctime=1645078071)
>>> path.resolve() # 获取绝对路径
PosixPath('/tmp/aaa.txt')
>>> path.cwd() # 获取当前路径
PosixPath('/tmp')
>>> path.home() # 获取家目录
PosixPath('/root')
文件修改
当target是string时,重命名文件或文件夹;当target是Path时,重命名并移动文件或文件夹。
path.rename(target)
重命名当前文件或文件夹,如果target所指示的文件或文件夹已存在,则覆盖原文件。
path.replace(target)
path为空文件夹的时候,删除该文件夹
>>> path = Path('/tmp/aaa')
>>> path.exists()
True
>>> path.rmdir()
>>> path.exists()
False
删除文件或目录,目录非空触发异常。
>>> path = Path('/tmp/bbb')
>>> path.unlink()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/python3/lib/python3.8/pathlib.py", line 1324, in unlink
self._accessor.unlink(self)
IsADirectoryError: [Errno 21] Is a directory: '/tmp/bbb'
根据路径创建文件夹,parents=True时,会依次创建路径中间缺少的文件夹。
>>> path = Path('/tmp/aaa/bbb/ccc')
>>> path.mkdir()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/python3/lib/python3.8/pathlib.py", line 1287, in mkdir
self._accessor.mkdir(self, mode)
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/aaa/bbb/ccc'
>>> path.mkdir(parents=True)
Python:pathlib模块的更多相关文章
- python pathlib模块详解
python pathlib模块详解
- python pathlib模块(面向对象的文件系统路径)
该模块提供表示文件系统路径的类,其语义适用于不同的操作系统 导入Path类: 获取当前目录的绝对路径: 返回当前目录的路径对象 路径拼接 os与PurePath/Path函数映射表 来自为知笔记(Wi ...
- Python中pathlib模块
Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...
- 【转】Python 3的pathlib模块:驯服文件系统
[转]Python 3的pathlib模块:驯服文件系统 https://python.freelycode.com/contribution/detail/1248 Python部落(python. ...
- Python的路径操作(os模块与pathlib模块)
Python的路径操作(os模块与pathlib模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.os.path模块(Python 3.4版本之前推荐使用该模块) #!/u ...
- python路径操作新标准:pathlib 模块
之前如果要使用 python 操作文件路径,我总是会条件反射导入 os.path. 而现在,我会更加喜欢用新式的 pathlib, 虽然用得还是没有 os.path 熟练,但是以后会坚持使用. pat ...
- Python 搜索文件,文件过滤,pathlib模块
1,搜索文件,文件过滤 这里使用:pathlib 模块的 Path.glob(pattern) 方法,该方法可以用来过滤目标文件,以迭代器的形式返回搜索结果. pattern: 通配符:" ...
- pathlib模块
一.pathlib库官方定义 pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径).path ...
- pathlib模块替代os.path
pathlib模块替代os.path 在Python 3.4之前和路径相关操作函数都放在os模块里面,尤其是os.path这个子模块,可以说os.path模块非常常用.而在Python 3.4,标准库 ...
随机推荐
- 第10组 Alpha冲刺 (4/6)
1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/13982696.html ·作业博客:https://edu.cnblogs.co ...
- HDU 2099 整除的尾数(枚举 & 暴搜)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2099 思路分析:这道题的解法可以说是相当暴力了,但也有一些小坑,以下几点萌新们值得留意一下: 1. 仔 ...
- 通过springBoot集成搭建webScoket服务器
前言: 最近工作中有一个需求,就是服务端要主动推送消息给客户端,而我们平常的Http请求只能一请求一响应,为此学习了webScokset通讯技术,以下介绍的是java 通过SpringBoot集成we ...
- 【Warrior刷题笔记】143.重排链表 【线性化 || 双指针+翻转链表+链表合并】详细注释
题目一 力扣143.重排链表 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reorder-list/ 1.描述 给定一个单链表L的头节点he ...
- BIO,NIO,AIO 总结
BIO,NIO,AIO 总结 一.同步阻塞 (BIO) 同步阻塞IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不 做任何事情会造成不必要的线 ...
- Java对象内存模型
2 Java对象内存模型 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header). 实例数据(Instance Data)和对齐填充(Padding). 在 JVM ...
- 《剑指offer》面试题10- I. 斐波那契数列
问题描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - ...
- Go 命令行参数,JSON 序列化与反序列化
#### Go 命令行参数,JSON 序列,反序列化这一节来学习一下Go 如果解析命令行参数,以及JSON 的序列化及反序列化; 命令行参数对于熟悉Linux 的同学来说比较清楚,如: ls -a , ...
- Filter的拦截路径
Filter的拦截路径 精确匹配 <url-pattern>/target.jsp</url-pattern> 以上配置的路径,表示请求地址必须为:http://ip.port ...
- Filter-完整的用户登录和权限检查
Filter过滤器的使用步骤: 1,编写一个类去实现Filter接口 2,实现拦截(过滤)方法doFilter() 3,到web.xml中配置Filter的拦截路径 补充login.jsp登录页面 编 ...