0


python 上下文管理器 with 语句

上下文管理器

with

语句可以自动地分配和释放资源。

读写文件

这篇文章中介绍了文件读写的方法,每次读取文件时要使用

open()

函数打开文件,使用结束后要用

close()

函数关闭文件。有时,我们会忘记关闭文件,或者打开了许多文件占用太多资源。使用上下文管理器

with

语句可以方便地读取文件,它会自动地释放文件。

withopen('test.txt')as f:
    f.read()
with

语句后可进行文件操作,它会自动关闭文件,而不用去调用

close()

函数。

基于类的上下文管理器

用类创建上下文管理器,需要包括

__enter__()

方法,返回需要被管理地资源,也要包括

__exit__()

方法,保存一些释放、清理资源的操作。

classManager():def__init__(self):passdef__enter__(self):passdef__exit__(self, exc_type, exc_val, exc_tb):pass
__exit__()

方法中的参数分别表示 exception_type、exception_value 和 traceback,当执行

with

语句时,如果有异常抛出,异常的信息就会包含在这三个变量中,传入方法

__exit__()

,这样就可以在该方法中处理异常了。如果确定异常已经被处理了,请在

__exit__()

的最后,加上

return True

这条语句,否则异常仍然会被抛出。

with Manager()as f:pass

当使用

with

语句创建上下文管理器时,首先会调用

__init__()

函数创建对象;其次调用

__enter__()

函数,返回的

Manager

对象赋值给变量

f

,再进行

with

下的操作;最后调用

__exit__()

语句释放资源。

基于生成器的上下文管理器

@contextmanager
defmanager(name, mode):try:
        f =open(name, mode)yield f
    finally:
        f.close()with manager('test.txt','w')as f:pass

这段代码中

manager

即是一个生成器,

with

语句会打开文件,返回文件对象

f

,结束后关闭文件。务必加上装饰器

@contextmanager

标签: python

本文转载自: https://blog.csdn.net/Yu_L2/article/details/123274177
版权归原作者 笨蛋程序员 所有, 如有侵权,请联系我们删除。

“python 上下文管理器 with 语句”的评论:

还没有评论