Python文件路径处理之pathlib2模块

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值