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