首先说一下什么叫上下文管理器:
在python中任何实现了 __enter__() 和 __exit__() 方法的对象都可称之为上下文管理器,
上下文管理器对象可以使用 with 关键字
我们可以模拟实现一个类,让该类实现 __enter__() 和 __exit__() 方法
class File():
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
print("shangwen")
self.f = open(self.filename, self.mode)
return self.f
def __exit__(self, *args):
print("xiawen")
self.f.close()
with File('mytest.txt', 'w') as f:
print("正在写入")
f.write('。。。。。。。。')
这样,你就无需显示地调用 close 方法了,由系统自动去调用,哪怕中间遇到异常 close 方法也会被调用。