with上下文管理器

2021-09-19 10:23:12 字數 1348 閱讀 1360

上下文管理器

任何實現了enter() 和exit() ⽅法的物件都可稱之為上下⽂管理

器,上下⽂管理器物件可以使⽤ with 關鍵字。顯然,⽂件(file)物件也實現

了上下⽂管理器

方法一

class

file()

:def

__init__

(self, filename, mode)

: self.filename = filename

self.mode = mode

def__enter__

(self)

:print

("entering"

) self.f =

open

(self.filename, self.mode)

return self.f

def__exit__

(self,

*args)

:print

("will exit"

) self.f.close(

)

enter() ⽅法返回資源物件,這⾥就是你將要開啟的那個⽂件物件,

exit() ⽅法處理⼀些清除⼯作。

因為 file 類實現了上下⽂管理器,現在就可以使⽤ with 語句了。

with file(

'out.txt'

,'w'

)as f:

print

("writing"

) f.write(

'hello, python'

)

這樣,你就⽆需顯示地調⽤ close ⽅法了,由系統⾃動去調⽤,哪怕中間遇

到異常 close ⽅法也會被調⽤。

方法二定義

from contextlib import contextmanager

@contextmanager

defmy_open

(path, mode)

: f =

open

(path, mode)

yield f

f.close(

)

調⽤

with my_open(

'out.txt'

,'w'

)as f:

f.write(

"hello , the ******st context manager"

)

with上下文管理器

在執行 with 語句時,首先執行 with 後面的 open 執行完 後,會將 的結果通過 as 儲存到 f 中 然後在下面實現真正要執行的操作 在操作後面,並不需要寫檔案的關閉操作,檔案會在使用完後自動關閉 實際上,在檔案操作時,並不是不需要寫檔案的關閉,而是檔案的關閉操作在 with 的上下文...

上下文管理器

今天我們聊聊上下文管理器,當然今天所談僅為個人觀點!今天如果不是學生面試回來跟我聊到了上下文管理器,我都忘了python中還有這麼個鬼了。特別寫一篇博文我們簡單聊聊。普通的檔案操作方式,例如 情況01 1 以寫的方式開啟檔案 f open 1.txt w 2 寫入檔案內容 f.write hello...

python 上下文管理器

上下文管理器允許你在有需要的時候,精確地分配和釋放資源。使用上下文管理器最廣泛的案例就是with語句了。想象下你有兩個需要結對執行的相關操作,然後還要在它們中間放置一段 上下文管理器就是專門讓你做這種事情的。舉個例子 with open some file w as opened file open...