Python學習日記 else與with語句

2021-09-29 05:24:39 字數 1813 閱讀 1797

上一次是針對錯誤和異常,今天從else和with語句對其進行補充

乙個 try 語句可能包含多個except子句,分別來處理不同的特定的異常。最多只有乙個分支會被執行。

處理程式將只針對對應的try子句中的異常進行處理,而不是其他的 try 的處理程式中的異常。乙個except子句可以同時處理多個異常,這些異常將被放在乙個括號裡成為乙個元組,最後乙個except子句可以忽略異常的名稱,它將被當作萬用字元使用。你可以使用這種方法列印乙個錯誤資訊,然後再次把異常丟擲。

for arg in sys.ar**[1:

]:try:

f =open

(arg,

'r')

except ioerror:

print

('cannot open'

, arg)

else

:print

(arg,

'has'

,len

(f.readlines())

,'lines'

) f.close(

)

使用 else 子句比把所有的語句都放在 try 子句裡面要好,這樣可以避免一些意想不到的、而except又沒有捕獲的異常。

異常處理並不僅僅處理那些直接發生在try子句中的異常,而且還能處理子句中呼叫的函式(甚至間接呼叫的函式)裡丟擲的異常。例如

>>

>

def this_fails():

x =1/

0>>

>

try:

this_fails(

)except zerodivisionerror as err:

print

('handling run-time error:'

, err)

handling run-time error:

int division or modulo by zero

預定義的清理行為

一些物件定義了標準的清理行為,無論系統是否成功的使用了它,一旦不需要它了,那麼這個標準的清理行為就會執行。

這面這個例子展示了嘗試開啟乙個檔案,然後把內容列印到螢幕上

for line in

open

("myfile.txt"):

print

(line, end=

"")

以上這段**的問題是,當執行完畢後,檔案會保持開啟狀態,並沒有被關閉。

with

open

("myfile.txt"

)as f:

for line in f:

print

(line, end=

"")

以上這段**執行完畢後,就算在處理過程**問題了,檔案 f 總是會關閉。

temp = os.

open

('test_text.txt'

, os.o_rdwr | os.o_creat)

temp_file = os.fdopen(temp,

'r')

print

(str

(temp_file.read())

)os.close(temp)

就可以簡化成:

with

open

('test_text.txt'

,'r'

)as f:

print

(f.read(

))

Python學習筆記9 else與with語句

i 1while i 5 print i i 1else print i,5 1 2345 6 5i 1for i in range 1 11 print i else print else i 123 4567 8910else 10press any key to continue.def tr...

Python 中的迴圈與 else

python 中的迴圈與 else 有以下兩種形式 python中的 for while 迴圈都有乙個可選 optional 的 else 分支 類似 if語句和 try 語句那樣 在迴圈迭代正常完成之後執行。所謂迴圈迭代正常完成,一般是指 所需要迭代處理的物件遍歷完畢,且中間沒有異常發生 注 縱然...

python中else與with語句(day9)

else語句 if else語句 wwe input sname if wwe.endswith wawa print wwwe,wawa else print wwe,nono while else語句 如有break,直接跳出,不執行else語句 count 0while count 5 pri...