Python with as用法詳解

2021-10-10 04:27:06 字數 910 閱讀 5540

任何一門程式語言中,檔案的輸入輸出、資料庫的連線斷開等,都是很常見的資源管理操作。但資源都是有限的,在寫程式時,必須保證這些資源在使用過後得到釋放,不然就容易造成資源洩露,輕者使得系統處理緩慢,嚴重時會使系統崩潰。

例如,前面在介紹檔案操作時,一直強調開啟的檔案最後一定要關閉,否則會程式的執行造成意想不到的隱患。但是,即便使用 close() 做好了關閉檔案的操作,如果在開啟檔案或檔案操作過程中丟擲了異常,還是無法及時關閉檔案。

為了更好地避免此類問題,不同的程式語言都引入了不同的機制。在 python 中,對應的解決方式是使用 with as 語句操作上下文管理器(context manager),它能夠幫助我們自動分配並且釋放資源。

,使用 with as 操作已經開啟的檔案物件(本身就是上下文管理器),無論期間是否丟擲異常,都能保證 with as 語句執行完畢後自動關閉已經開啟的檔案。

首先學習如何使用 with as 語句。with as 語句的基本語法格式為:

with 表示式 [as target]:

**塊此格式中,用 括起來的部分可以使用,也可以省略。其中,target 引數用於指定乙個變數,該語句會將 expression 指定的結果儲存到該變數中。with as 語句中的**塊如果不想執行任何語句,可以直接使用 pass 語句代替。

舉個例子,假設有乙個 a.txt 檔案,其儲存內容如下:

c語言中文網

在和 a.txt 同級目錄下,建立乙個 .py 檔案,並編寫如下**:

with open(『a.txt』, 『a』) as f:

f.write("\npython教程")

執行結果為:

c語言中文網

python教程

可以看到,通過使用 with as 語句,即便最終沒有關閉檔案,修改檔案內容的操作也能成功。

超直觀精闢python with as的用法及原理

with.as作用和try.finally一樣,也是捕獲異常,但是不處理異常,不管使用過程中是否發生異常都會執行必要的 清理 操作,釋放資源,比如檔案使用後自動關閉等操作with語句是什麼?有一些任務,可能事先需要設定,事後做清理工作。對於這種場景,python的with語句提供了一種非常方便的處理...

nginx limit req zone用法詳解

nginx可以使用ngx http limit req module模組的limit req zone指令進行限流訪問,防止使用者惡意攻擊刷爆伺服器。ngx http limit req module模組是nginx預設安裝的,所以直接配置即可。首先,在nginx.conf檔案中的http模組下配置...

python with as 進行檔案讀取

1.用with.as.來做檔案內容的讀取 在內容不多的情況下,如果檔案巨大,還是一行一行讀取吧 filename os.path.join self.data path,annotations index txt with open filename as f lines x.strip for x...