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...