一般我们操作文件的时候,大家都会知道我们使用with的方式去写,一般如下
with open('xxxx/test.txt') as f:
'xxxxxx'
那么我们为什么要使用这种方式去操作文件呢?因为with这种方式自动帮我们执行了close关闭文件句柄的操作,免的我们忘记关闭句柄,浪费资源。
那我们为什么是使用with方式就可以达到这种效果呢?这就是我们今天说的python的上下文管理器的作用。简单来说上下文管理器必须在这个对象的类中声明__enter__和__exit__方法
下面我们看看怎么定义自己的上下文管理器:
class Context:
def init(self,name):
self.name=name
# 下面使用with语句, 对象的__enter__被触发, 返回值则赋值给as声明的变量,这里就是f
def __enter__(self):
print('自定义上下文管理器')
# return self
#with中代码块执行完毕时触发执行,用来释放资源,例如文件句柄,数据库连接等
def __exit__(self, exc_type, exc_val, exc_tb):
print('程序运行结束,释放资源')
print(exc_type)
print(exc_val)
print(exc_tb)
# return True
复制代码
with Context('test.txt') as f:
print('主逻