with上下文管理器
python中的with关键字
我们经常使用到with的地方就是对文件进行读写操作的时候,我们不需要自己去close,自动会帮我们处理
with open('zx.txt','w') as f
f.write('zx')
with的原理-上下文管理器
概念
任何实现了 __enter__()
和 __exit__()
方法的对象都可称之为上下文管理器
手写一个文件操作的上下文管理器
首先初始化对象,然后with会去找类中的 __enter__()
方法,当return后,执行缩进的代码,最后执行 __exit__()
处理最后的操作
class file_zx:
def __init__(self,file_name,do):
self.file_name = file_name
self.do = do
def __enter__(self):
self.fw = open(self.file_name,self.do)
return self.fw
def __exit__(self, exc_type, exc_val, exc_tb):
self.fw.close()
with file_zx('zx.log','w') as fw:
fw.write('zxzxzx')
init
entry
over
exit