Blog:博客园 个人

关于panthlib模块

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

以下是一个映射了 os PurePath/Path 对应相同的函数的表。

注意:尽管 os.path.relpath()PurePath.relative_to() 拥有相同的重叠的用例,但是它们语义相差很大,不能认为它们等价。

os 和 os.path pathlib
os.path.abspath() Path.resolve()
os.chmod() Path.chmod()
os.mkdir() Path.mkdir()
os.makedirs() Path.mkdir()
os.rename() Path.rename()
os.replace() Path.replace()
os.rmdir() Path.rmdir()
os.remove(), os.unlink() Path.unlink()
os.getcwd() Path.cwd()
os.path.exists() Path.exists()
os.path.expanduser() Path.expanduser()Path.home()
os.listdir() Path.iterdir()
os.path.isdir() Path.is_dir()
os.path.isfile() Path.is_file()
os.path.islink() Path.is_symlink()
os.link() Path.link_to()
os.symlink() Path.symlink_to()
os.readlink() Path.readlink()
os.stat() Path.stat(), Path.owner(), Path.group()
os.path.isabs() PurePath.is_absolute()
os.path.join() PurePath.joinpath()
os.path.basename() PurePath.name
os.path.dirname() PurePath.parent
os.path.samefile() Path.samefile()
os.path.splitext() PurePath.suffix

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')

文件修改

targetstring时,重命名文件或文件夹;当targetPath时,重命名并移动文件或文件夹。

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模块的更多相关文章

  1. python pathlib模块详解

    python pathlib模块详解    

  2. python pathlib模块(面向对象的文件系统路径)

    该模块提供表示文件系统路径的类,其语义适用于不同的操作系统 导入Path类: 获取当前目录的绝对路径: 返回当前目录的路径对象 路径拼接 os与PurePath/Path函数映射表 来自为知笔记(Wi ...

  3. Python中pathlib模块

    Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...

  4. 【转】Python 3的pathlib模块:驯服文件系统

    [转]Python 3的pathlib模块:驯服文件系统 https://python.freelycode.com/contribution/detail/1248 Python部落(python. ...

  5. Python的路径操作(os模块与pathlib模块)

    Python的路径操作(os模块与pathlib模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.os.path模块(Python 3.4版本之前推荐使用该模块) #!/u ...

  6. python路径操作新标准:pathlib 模块

    之前如果要使用 python 操作文件路径,我总是会条件反射导入 os.path. 而现在,我会更加喜欢用新式的 pathlib, 虽然用得还是没有 os.path 熟练,但是以后会坚持使用. pat ...

  7. Python 搜索文件,文件过滤,pathlib模块

    1,搜索文件,文件过滤 这里使用:pathlib 模块的  Path.glob(pattern)  方法,该方法可以用来过滤目标文件,以迭代器的形式返回搜索结果. pattern: 通配符:" ...

  8. pathlib模块

    一.pathlib库官方定义 pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径).path ...

  9. pathlib模块替代os.path

    pathlib模块替代os.path 在Python 3.4之前和路径相关操作函数都放在os模块里面,尤其是os.path这个子模块,可以说os.path模块非常常用.而在Python 3.4,标准库 ...

随机推荐

  1. Maven+ajax+SSM实现编辑修改

    转载自:https://www.cnblogs.com/kebibuluan/p/9017754.html 3.尚硅谷_SSM高级整合_使用ajax操作实现修改员工的功能 当我们点击编辑案例的时候,我 ...

  2. CSS命名规范整理

    基于网易NEC修改后,整理的命名规范 单行写完一个选择器定义 便于选择器的寻找和阅读,也便于插入新选择器和编辑,便于模块等的识别.去除多余空格,使代码紧凑减少换行. 如果有嵌套定义,可以采取内部单行的 ...

  3. Numpy实现简单BP神经网络识别手写数字

    本文将用Numpy实现简单BP神经网络完成对手写数字图片的识别,数据集为42000张带标签的28x28像素手写数字图像.在计算机完成对手写数字图片的识别过程中,代表图片的28x28=764个像素的特征 ...

  4. day 19 C语言顺序结构基础2

    (1).算术运算符和圆括号有不同的运算优先级,对于表达式:a+b+c*(d+e),关于执行步骤,以下说法正确的是[A] (A).先执行a+b的r1,再执行(d+e)的r2,再执行c*r2的r3,最后执 ...

  5. Solon 开发,六、提取Bean的函数进行定制开发

    Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...

  6. 以太 ip tcp udp 三次握手的理解

    以太帧: 1.前导码(7字节):使接收器建立比特同步. 2.起始定界符SFD(1字节):指示一帧的开始. 3.目的地址DA(6字节):指出要接收该帧的工作站. 4.源地址SA(6字节):指示发送该帧的 ...

  7. Anaconda 创建 32位python虚拟环境

    Anaconda 创建 32位python虚拟环境 ​ 最近实习在做一个接口自动化数据上传的功能,因为数据是更新的,需要每次上传都查询数据库调用匹配,就不得不面对 python 连接 oracle . ...

  8. VS code远程连接Linux 开发C++ 配置详细介绍

    VS code 远程连接服务器,编译C++ 一.前期准备 1.VS code安装 Remote-SSH插件 2.Windows安装SSH. 3.Linux服务器连接测试. a.接通测试使用ping命令 ...

  9. docker镜像中文件丢失

    背景介绍 笔者创建了一个镜像,然后在不同的主机上启动,发现有的能启动,有的却不行,报错信息为找不到文件. 犹记得当初有人介绍,只要docker镜像做好了,拿到任何地方都可以用,此处好像不成呢,好诡异的 ...

  10. 创建一个python类 ,self init相关参数的简单介绍

    一 创建 ''' 一 使用python 语法 创建一个类, 探究self 是干啥的 1 创建一个对象 car 2 写入两个行参 3 定义两个方法 ''' class Car(): ''' 二 init ...