python with 上下文管理器

简介

1、什么是上下文管理器?
上下文管理器是一种实现了上下文管理协议(Context Management Protocol)的对象,它通过定义__enter__()__exit__()两个特殊方法来实现资源的获取和释放。上下文管理器通常使用with语句进行调用,确保资源在使用完毕后能够被正确释放。

python中上下文管理器,用于管理资源的获取和释放。以一种简洁且安全的方式来处理资源的打开、关闭和异常处理,使得代码更加可读、可维护,同时增强了程序的健壮性。

2、常见例子:

with open('test.txt') as f:
    data = f.readlines()

注:open()函数返回的文件对象是一个上下文管理器,通过with语句来使用它。在代码块执行完毕后,文件对象的__exit__()方法会自动关闭文件,无需手动调用close()方法。

实例

3、自定义上下文管理器

class ContextManager:
    def __init__(self, filename):
        self.filename = filename
        self.open_file = None

    def __enter__(self):
        print(self.filename)
        self.open_file = open(self.filename, 'r')
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.open_file.close()

    def read_file(self):
        return self.open_file.readline()


def with_test():
    try:
        # 使用自定义的上下文管理器
        with ContextManager("test_file.txt") as cm:
            data = cm.read_file()
            print(data)
    except Exception as e:
        raise e

if __name__ == '__main__':
    with_test()
posted @ 2024-08-09 17:29  二月雪  阅读(11)  评论(0编辑  收藏  举报