Python上下文管理协议

在Python中,with open()方法又称为上下文管理协议(Context Management Protocol)。这个协议提供了一种方式来执行一段代码,并在代码执行前后自动执行一些操作,比如打开和关闭文件、获取和设置线程锁等。

with语句是Python中实现上下文管理协议的关键部分。它允许你指定一个对象,该对象必须实现__enter__()和__exit__()两个特殊方法。在进入with块时,__enter__()方法被调用,在退出with块时,__exit__()方法被调用。

使用with open()可以确保文件在使用完毕后被正确关闭,即使在处理文件时发生了异常。这样可以避免资源泄漏和其他问题。

with open方法相较于前面的方法优势是可以自动关闭文件,不需要手动关闭,这种方法也是较为常用的

其格式为with open('文件路径',文件打开模式:读取还是写入,编码格式) as f(as是取别名,后面的f是具体的名称):标红色的都是固定格式,别名可以任意取

代码的使用方法和参数啥的上篇文章写的很详细了,这里我就不再细说了

读取方法

下面用一段代码来演示:

with open(r'D:\PycharmProjects\firstproject\遮天\day01.txt','r',encoding='utf-8') as f:
    print(f.read())

这个是读取文件里面的内容,下面再来给大家演示一个写入的方法

写入方法

写入单条:
with open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', 'w', encoding='utf-8') as f:
    f.write('这是写入的方法')

这个就是用with open()方法向文件里面写入内容

写入多条内容:
with open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', 'w', encoding='utf-8') as f:
    f.writelines(['前不见古人', '\n后不见来者', '\n念天地之悠悠', '\n独怆然而泪下'])

这里用的函数方法和上一篇文章用的方法是一样的都是writelines

追加写入:
with open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', 'a', encoding='utf-8') as f:
    f.write('加油,特种兵')
追加写入多条内容:
with open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', 'a', encoding='utf-8') as f:
    f.writelines(['\n生当作人杰', '\n死亦为鬼雄'])

\n是换行哦,铁子们不要忘记,追加的参数是a

二进制

二进制读取:
with open(r'D:\PycharmProjects\firstproject\遮天\R-C.jpg', 'rb') as f:
    pic = f.read()
    print(pic)

要注意读取二进制文件有以下两点:

1、要用变量来接收,具体原因上篇文章我已经讲了

2、不能写编码格式,因为是二进制文件

二进制写入:
with open(r'D:\PycharmProjects\firstproject\遮天\R-C.jpg', 'rb') as f:
    pic = f.read()
    # print(pic)

with open(r'D:\PycharmProjects\firstproject\遮天\R-C2.jpg', 'wb') as f:
    f.write(pic)

这篇文章里面代码的用法和上篇文章除了是用with open方法,其他的用法都是一样的,大家可以参考上一篇来对比一下,这样印象更深刻,更容易理解,还有w+方法和r+方法我没演示,感兴趣的可以自己试一试。要注意里面的代码的路径和文件是我自己的,你们电脑上的要自己创建,图片也要自己找,不明白的可以私信我。

最后感谢大家的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值