Python with用法 自動關閉檔案原理

2022-07-12 00:15:14 字數 778 閱讀 9981

with語句的語法,ontext_expression 用於建立可自動關閉的資源。

with context expression [as target(s)]:

with **塊

使用with 開啟檔案並讀取檔案資料

with open('test.yml',encoding='utf-8') as f:

print(f,read())

使用了 with 語句來管理資源,因此它們都不需要顯式關閉檔案。

with 語句的實現原理是什麼?其實很簡單,使用 with 語句管理的資源必須是乙個實現上下文管理協議(context manage protocol)的類,這個類的物件可被稱為上下文管理器。要實現上下文管理協議,必須實現如下兩個方法

context_manager.__enter__():進入上下文管理器自動呼叫的方法。該方法會在 with **塊執行之前執行。如果 with 語句有 as子句,那麼該方法的返回值會被賦值給 as 子句後的變數;該方法可以返回多個值,因此,在 as 子句後面也可以指定多個變數(多個變數必須由「()」括起來組成元組)。

context_manager.__exit__(exc_type, exc_value, exc_traceback):退出上下文管理器自動呼叫的方法。該方法會在 with **塊執行之後執行。如果 with **塊成功執行結束,程式自動呼叫該方法,呼叫該方法的三個引數都為 none:如果 with **塊因為異常而中止,程式也自動呼叫該方法,使用 sys.exc_info 得到的異常資訊將作為呼叫該方法的參

python with用法詳解

coding utf8 def except try try print start raise keyerror raise indexerror return 1 except keyerror print key error 異常時執行 return 2 else print other er...

關於python with的用法及異常處理

在網上看到一些人部落格使用 with 用於異常處理,但是我在網仔細查閱,發現 該關鍵字不是用於處理異常的。實際上,在with後面的 塊丟擲異常時,exit 方法被執行。開發庫時,清理資源,關閉檔案等操作,都可以放在exit 方法中。總之,with as表示式極大的簡化了每次寫finally的工作,這...

oracle隨linux OS自動啟動與關閉

在linux 上裝的oracle 每次開機都要手動啟動oracle服務,想做到自動環境 rhel 5 linux oracle 10g now begin 用root 登入 1,vi etc oratab 2,在 etc init.d 下新建一檔案create an file touch etc i...