上下文管理__enter__进入文件时,__exit__离开

"""
__enter__:1.进入文件,开打文件时执行
2.函数应该返回自己self
__exit__:1.退出文件、报错中断、或者代码执行完时执行
2.可以有返回值,是bool类型

"""

class MyOpen(object):
    def __init__(self, path):
        self.path = path
    
    # 进入文件时触发
    def __enter__(self):
        self.file = open(self.path)
        print("文件打开....")
        return self
    
    # 离开文件时触发
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("文件关闭")
        # print(exc_type,exc_val,exc_tb)
        self.file.close()  # 关闭文件
        return True


with MyOpen('a.txt') as f:
    print(f.file.readline())

# f.file.readline()   # 文件已经关闭了,不能读

 

上一篇:python 终止协程和异常处理


下一篇:Python上下文管理器的使用