使用with语句替代try-finally 语句,代码更加的简洁清晰
对于需要对资源进行访问的任务,无论在代码运行过程中,是否发 生异常,都会执行必要的清理操作,释放资源。
with open(r"D:\code1\pythontest\mypython.txt") as f:
print(f.read())
with open(r"D:\code1\pythontest\mypython.txt") as f:
print(f.read())
print(f.read())
with open(r"D:\code1\pythontest\mypython.txt","w") as f:
print(f.read())
上下文管理器是Python中的一种协议,它保证了每次代码执行的一致性
一旦进入上下文管理器,就一定会按照规定的步骤退出
如果合理的设计了退出上下文管理器的步骤,就能够很好的处理异常。
上下文管理器被最多用到的场景是资源清理操作。
实现上下文管理器,只要在类定义时,实现__enter__()方法和__exit__()方法即可
with 上下文管理器表达式 [ as 变量]:
语句块
#上下文管理器
class File():
def __init__(self,filename,mode):
self.filename=filename
self.mode=mode
#在with语句块执行前,首先会执行enter()方法
def __enter__(self):
print("执行__enter__function.")
self.f = open(self.filename,self.mode)
return self.f
#当with语句块执行结束,无论是否出现异常,都会调用__exit__()方法
#通常将清除、释放资源的操作写在__exit__()方法中
def __exit__(self,*args):
print("执行s__exit__function.")
self.f.close()
with File(r'D:\code1\pythontest\mypython.txt','r') as f:
print(f.read())