【pathlib库使用手册】pathlib定义: Object-oriented filesystem paths(面向对象的文件系统路径),其语义适用于不同的操作系统,它继承纯路径但也提供I/O化操作,在处理配置路径方面十分简单 。
以前在Python中操作文件路径,我们更多的时候是使用os模块;Python3时代后,Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单,甚至可以说pathlib已经可以完全替代os.path 。
我们所有的例子中都导入了pathlib2模块而不是pathlib模块,因为简单引用官方的话说就是老版本的pathlib模块已经只作为修复bug模式存在,而新版本的pathlib2是以修补更新的pathlib2而发布的,而且所有的新功能都可以兼容过去的旧版本python 。常用的pathlib操作的例子汇总:
返回当前工作目录路径和Home路径
from pathlib2 import Path# 获取当前目录current_path = Path.cwd()print(current_path)# 输出如下:# /Users/Anders/Documents/# 获取Home目录home_path = Path.home()print(home_path)# 输出如下:# /Users/Anders 父目录操作 from pathlib2 import Path# 获取当前目录current_path = Path.cwd()# 获取上级父目录print(current_path.parent)# 获取上上级父目录print(current_path.parent.parent)# 获取上上上级父目录print(current_path.parent.parent.parent)# 获取上上上上级父目录print(current_path.parent.parent.parent.parent)# 获取上上上上级父目录print(current_path.parent.parent.parent.parent.parent)# 输出如下:# /Users/Anders/Documents/Jupyter# /Users/Anders/Documents# /Users/Anders# /Users# / # 获取当前目录from pathlib2 import Pathcurrent_path = Path.cwd()for p in current_path.parents:print(p)# 输出如下:# /Users/Anders/Documents/Jupyter# /Users/Anders/Documents# /Users/Anders# /Users# / 文件名操作 常用的文件名操作属性如下:- name 目录的最后一个部分
- suffix 目录中最后一个部分的扩展名
- suffixes 返回多个扩展名列表
- stem 目录最后一个部分,没有后缀
- with_name(name) 替换目录最后一个部分并返回一个新的路径
- with_suffix(suffix) 替换扩展名,返回新的路径,扩展名存在则不变
from pathlib2 import Path# 返回目录中最后一个部分的扩展名example_path = Path('/Users/Anders/Documents/abc.gif')print(example_path.suffix)# 输出如下:# .gif# 返回目录中多个扩展名列表example_paths = Path('/Users/Anders/Documents/abc.tar.gz')print(example_paths.suffixes)# 输出如下:# ['.tar', '.gz']# 返回目录中最后一个部分的文件名(但是不包含后缀)example_path = Path('/Users/Anders/Documents/abc.gif')print(example_path.stem)# 输出如下:# abc# 返回目录中最后一个部分的文件名example_path = Path('/Users/Anders/Documents/abc.gif')print(example_path.name)# 输出如下:# abc.gif# 替换目录最后一个部分的文件名并返回一个新的路径new_path1 = example_path.with_name('def.gif')print(new_path1)# 输出如下:# /Users/Anders/Documents/def.gif# 替换目录最后一个部分的文件名并返回一个新的路径new_path2 = example_path.with_suffix('.txt')print(new_path2)# 输出如下:# /Users/Anders/Documents/abc.txt 路径拼接和分解 from pathlib2 import Path#直接传进一个完整字符串example_path1 = Path('/Users/Anders/Documents/powershell-2.jpg')#也可以传进多个字符串example_path2 = Path('/', 'Users', 'dongh', 'Documents', 'python_learn', 'pathlib_', 'file1.txt')#也可以利用Path.joinpath()example_path3 = Path('/Users/Anders/Documents/').joinpath('python_learn')# #利用 / 可以创建子路径example_path4 = Path('/Users/Anders/Documents')example_path5 = example_path4 / 'python_learn/pic-2.jpg' 遍历文件夹 from pathlib2 import Path# 返回目录中最后一个部分的扩展名example_path = Path('/Users/Anders/Documents')[path for path in example_path.iterdir()]# 输出如下:# [PosixPath('/Users/Anders/Documents/abc.jpg'),#PosixPath('/Users/Anders/Documents/book-master'),#PosixPath('/Users/Anders/Documents/Database'),#PosixPath('/Users/Anders/Documents/Git'),#PosixPath('/Users/Anders/Documents/AppProjects')] 文件操作 open(mode=‘r’, bufferiong=-1, encoding=None, errors=None, newline=None)from pathlib2 import Pathexample_path = Path('/Users/Anders/Documents/information/JH.txt')with example_path.open(encoding = 'GB2312') as f:print(f.read()) 对于简单的文件读写,在pathlib库中有几个简便的方法:- .read_text(): 以文本模式打开路径并并以字符串形式返回内容 。
- .read_bytes(): 以二进制/字节模式打开路径并以字节串的形式返回内容 。
- .write_text(): 打开路径并向其写入字符串数据 。
- .write_bytes(): 以二进制/字节模式打开路径并向其写入数据 。
from pathlib2 import Pathexample_path = Path('/Users/Anders/Documents/information/JH.txt')example_path.read_text(encoding='GB2312') 创建文件夹和删除文件夹 关于这里的创建文件目录mkdir方法接收两个参数:- parents:如果父目录不存在,是否创建父目录 。
- exist_ok:只有在目录不存在时创建目录,目录已存在时不会抛出异常 。
from pathlib2 import Pathexample_path = Path('/Users/Anders/Documents/test1/test2/test3')# 创建文件目录,在这个例子中因为本身不存在test1,test2,test3,由于parents为True,所以都会被创建出来 。example_path.mkdir(parents = True, exist_ok = True)# 删除路径对象目录,如果要删除的文件夹内包含文件就会报错example_path.rmdir() 判断文件及文件夹对象是否存在 - is_dir() 是否是目录
- is_file() 是否是普通文件
- is_symlink() 是否是软链接
- is_socket() 是否是socket文件
- is_block_device() 是否是块设备
- is_char_device() 是否是字符设备
- is_absolute() 是否是绝对路径
- resolve() 返回一个新的路径,这个新路径就是当前Path对象的绝对路径,如果是软链接则直接被解析
- absolute() 也可以获取绝对路径,但是推荐resolve()
- exists() 该路径是否指向现有的目录或文件:
from pathlib2 import Pathexample_path = Path('/Users/Anders/Documents/pic.jpg')print(example_path.stat())# 输出如下:# os.stat_result(st_mode=33188, st_ino=8598206944, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=38054, st_atime=1549547190, st_mtime=1521009880, st_ctime=1521009883)print(example_path.stat().st_size)# 输出如下:# 38054 具体信息可以参见官方文档:https://docs.python.org/3.4/library/pathlib.html原文链接:https://blog.csdn.net/itanders/article/details/88754606
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
