Python文件路径处理之pathlib2模块
在编程中处理文件的读写操作时免不了要和文件路径打交道,甚至有时候为了完成某些场景功能会变的有些繁琐,以前在Python中操作文件路径,我们更多的时候是使用os模块。
而到了Python3时代后,Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单。甚至可以说pathlib已经可以完全替代os.path,它完全采用面向对象的编程方式,因为Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径),其语义适用于不同的操作系统,它继承纯路径但也提供I/O化操作,在处理配置路径方面十分简单。
老版本的pathlib模块已经只作为修复bug模式存在,而新版本的pathlib2是以修补更新的pathlib2而发布的,而且所有的新功能都可以兼容过去的旧版本python。
下面是常见的pathlib2操作的汇总
常用的属性和方法
# 返回工作目录和Home目录
from pathlib2 import Path 导入模块
Path.cwd() 获取当前工作目录
Path.home() 获取Home目录
Path.home().parent 获取Home目录的上级目录,如果还想上一级就继续以子对象继续操作parent属性就可以了
# 常用的文件名操作属性
file_path = Path('filename.gif')
file_path.suffix 返回目录中最后一个部分的扩展名
file_path.suffixs 返回目录中多个扩展名列表
file_path.stem 返回目录中最后一部分的文件名,不包含后缀
file_path.name 返回目录中最后一部分的文件名,包含后缀
file_path.with_name('new_filename.gif') 替换目录最后一个部分的文件名并返回一个新的路径
file_path.with_suffix('.txt') 替换目录最后一个部分的文件名后缀并返回一个新的路径
# 创建和删除文件夹
dir_path = "/Home/public/Documents/python_learn/pathlib/test"
dir_path.mkdir(parents = True, exist_ok = True)
创建文件目录,pathlib和test目录不存在,设置参数parents
= True,目录会自动创建。设置参数exist_ok = True,目录已
经存在不会报错。
dir_path.rmdir() 删除目录,如果要删除的文件夹内包含文件就会报错
# 判断文件夹和文件是否存在
file_path.is_dir() 判断是否为目录
file_path.is_file() 判断是否为文件
file_path.is_symlink() 判断是否是软链接
file_path.is_socket() 判断是否为socket文件
file_path.is_block_device() 判断是否是块设备
file_path.is_char_device() 判断是否是字符设备
file_path.is_absolute() 判断是否是绝对路径
file_path.resolve() 返回一个新的路径,这个新路径就是当前Path对象的绝对路径,如果是软链接则直接被解析
file_path.absolute() 可以获取绝对路径,但是推荐resolve()
file_path.exists() 判断该路径是否存在
# 查看文件信息
file_path.stat() 返回指定路径的文件信息。
file_path.stat().st_size 返回指定路径的文件大小
路径拼接和分解
# 直接传一个完整的字符串路径
file_path = Path('/Home/public/Documents/python_learn/pathlib.txt')
# 也可以传进多个字符串
file_path = Path('/', 'Home', 'public', 'Documents', 'python_learn', 'pathlib.txt')
# joinpath完成字符串拼接
file_path = Path('/Home/public/Documents/').joinpath('python_learn')
# 利用 / 可以创建子路径
new_file_path = file_path / 'python_learn/path_lib.txt'
# iterdir()方法,该方法返回一个生成器,我们可以循环遍历出所有指定目录下的目录路径
[path for path in file_path.iterdir()]
文件操作
from pathlib2 import Path
file_path = Path('/Home/public/Documents/python_learn/pathlib.txt')
# 对于文件读写的方法
with file_path.open(encoding = 'utf-8') as f:
print(f.read()) open方法打开文件进行操作
file_path.read_text() 以文本模式打开路径并并以字符串形式返回内容。
file_path.read_bytes() 以二进制/字节模式打开路径并以字节串的形式返回内容。
file_path.write_text() 打开路径并向其写入字符串数据。
file_path.write_bytes() 以二进制/字节模式打开路径并向其写入数据。
以上列举的只是pathlib2常用的方法和属性,但pathlib2的方便和强大远不止于此,具体信息可以参见官方文档:https://docs.python.org/3.4/library/pathlib.html