上一篇 :
无Python路径处理库Pathlib
pathlib是python 3.4才引进的一个较新的模块,从名字上也可以看出,主要是处理path相关的操作,但是和前面学习的os.path到底有和区别呢,为什么还需要引进一个新的模块,究竟有什么改进的地方呢?pathlib把每一个path封装成一个对象,通过操作对象来操作路径,非常体现类和对象的封装思想,而且通过对象操作,可以使用链式编程,非常方便。
配置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,一起学习交流技术,反馈网站使用中遇到问题。
内容、课程、广告等相关合作请扫描右侧二维码添加好友。
建议使用PC或笔记本电脑,浏览器使用Chrome或FireFox进行浏览,以开启左侧互动实验区来提升学习效率,推荐使用的分辨率为1920x1080或更高。
我们坚信最好的学习是参与其中这一理念,并致力成为中文互联网上体验更好的学练一体的IT技术学习交流平台。

您可加QQ群:575806994,一起学习交流技术,反馈网站使用中遇到问题。
内容、课程、广告等相关合作请扫描右侧二维码添加好友。
狐狸教程 Copyright 2021