import contextlib
# 自定义实现文件操作
class MyFile(object):
def __init__(self, fileName, fileMode):
self.fileName = fileName
self.fileMode = fileMode
# 上文方法
def __enter__(self):
self.file = open(self.fileName, self.fileMode)
return self.file
# 下文方法
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close()
# 装饰器实现
@contextlib.contextmanager
def MyOpen(fileName, fileMode):
print("进入上文")
yield open(fileName, fileMode)
print("进入下文")
if __name__ == '__main__':
# with 上下文管理,实现类必须有enter和exit方法
# 自动处理file.close()操作
with MyFile("withText", 'r') as file:
print(file.read())
with MyOpen("withText", 'r') as file:
print(file.read())
2.进阶-with——管理上下文
最新推荐文章于 2024-07-19 16:36:18 发布