首先說一下什麼叫上下文管理器:
在python中任何實現了 __enter__() 和 __exit__() 方法的對象都可稱之爲上下文管理器,
上下文管理器對象可以使用 with 關鍵字
我們可以模擬實現一個類,讓該類實現 __enter__() 和 __exit__() 方法
class File():
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
print("shangwen")
self.f = open(self.filename, self.mode)
return self.f
def __exit__(self, *args):
print("xiawen")
self.f.close()
with File('mytest.txt', 'w') as f:
print("正在寫入")
f.write('。。。。。。。。')
這樣,你就無需顯示地調用 close 方法了,由系統自動去調用,哪怕中間遇到異常 close 方法也會被調用。