<<返回python首页 python

《Python 应用案例》

Python路径处理库Pathlib

pathlib是python 3.4才引进的一个较新的模块,从名字上也可以看出,主要是处理path相关的操作,但是和前面学习的os.path到底有和区别呢,为什么还需要引进一个新的模块,究竟有什么改进的地方呢?pathlib把每一个path封装成一个对象,通过操作对象来操作路径,非常体现类和对象的封装思想,而且通过对象操作,可以使用链式编程,非常方便。

Python路径处理库Pathlib

配置notebook以输出全部

%config ZMQInteractiveShell.ast_node_interactivity='all'

常用的操作

1. 路径的属性

列出所有父目录、父目录、文件名或目录名、文件前缀、文件后缀等...

创建测试文件

!touch test.txt
from pathlib import Path

p = Path('/root/test.txt')

p.parents                      # 所有父目录 

p.parent                       # 父目录

p.name                         # 文件名或目录名

p.stem                         # 文件前缀

p.suffix                       # 文件后缀

p.is_dir()                     # 文件夹判断

p.is_file()                    # 文件判断

p.exists()                     # 路径是否存在

p.stat()                       # 获取路径属性

2. 路径的操作

创建文件夹、路径连接、写文件、读文件、遍历子路径等...

from pathlib import Path

base_path = Path('/root/')
base_path.mkdir(exist_ok=True, parents=True)              # 创建文件夹

file_path = base_path / Path('test.text')                 # 路径连接

file_path.touch(exist_ok=True)                            # 创建文件

with file_path.open(mode='w', encoding='utf-8') as f:     # 写文件
    f.write('Hello World')

with file_path.open(mode='r') as f:                       # 读文件
    print(f.read())

for path in base_path.iterdir():                          # 遍历子路径
    print(path)

for item in base_path.rglob('*.*'):                      # 递归遍历子路径 (正则)
    print(item)

new_path = base_path / Path('new_file.text')
file_path.replace(new_path)                               # 移动文件夹

new_path.unlink()                                         # 删除文件

new_path.parent.rmdir()                                   # 删除文件夹(必须为空)

附录pathlib库与os库对比

os 和 os.path pathlib 说明
os.path.abspath() Path.resolve() 获取 path 的绝对路径
os.path.chmod() Path.chmod() 改变 path 的权限
os.path.mkdir() Path.mkdir() 创建文件夹
os.path.rename() Path.rename() path 重命名
os.path.replace() Path.replace() path 重命名 (新路径存在则替换)
os.path.remove(), os.unlink() Path.unlink() 删除 path
os.path.cwd() Path.cwd() 当前工作路径(current working directory)
os.path.exists() Path.exists() path 是否存在
os.path.expanduser() Path.expanduser() path 添加当前用户
os.path.isdir() Path.is_dir() 是否为文件夹
os.path.isfile() Path.is_file() 是否为文件
os.path.islink() Path.is_symlink() 是否为软链接
os.stat() Path.stat(), Path.owner(), Path.group() path 的属性
os.path.samefile() Path.samefile() 是否为相同文件
os.path.isabs() PurePath.is_absolute() 是否为绝对路径
os.path.join() PurePath.joinpath() 路径连接操作
os.path.dirname() PurePath.parent 前缀路径
os.path.basename() PurePath.name 路径名称
os.path.splitext() PurePath.suffix 路径后缀
移动端设备除iPad Pro外,其它移动设备仅能阅读基础的文本文字。
建议使用PC或笔记本电脑,浏览器使用Chrome或FireFox进行浏览,以开启左侧互动实验区来提升学习效率,推荐使用的分辨率为1920x1080或更高。
我们坚信最好的学习是参与其中这一理念,并致力成为中文互联网上体验更好的学练一体的IT技术学习交流平台。
您可加QQ群:575806994,一起学习交流技术,反馈网站使用中遇到问题。
内容、课程、广告等相关合作请扫描右侧二维码添加好友。

狐狸教程 Copyright 2021

进入全屏