Python:pathlib模块

Blog:博客园 个人

关于panthlib模块

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

pathlib-inheritance

以下是一个映射了 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')

文件修改

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)
posted @   不羁的罗恩  阅读(688)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示