python的with語句怎麼使用

karspb發表於2021-09-11

python的with語句怎麼使用

with語句處理異常

我們知道使用try-except-finally語句可以處理異常,接下來我們介紹使用with語句處理與異常相關的工作

with語句支援建立資源,丟擲異常,釋放資源等操作,並且程式碼簡潔。

with語句格式

with 上下文表示式 [as 資源物件]: 物件操作 說明:

上下文表示式,返回一個上下文管理物件

如果指定了as語句,該物件並不賦值給as子句中的資源物件,而是將上下文管理器的__enter__()方法的返回值賦值給了資源物件。

資源物件可以是單變數,也可以是元組。

使用with語句操作檔案物件

with open("/test.txt") as file:
    for aline in file:
        print(aline)

解釋說明: 這段程式碼使用with語句開啟檔案,如果順路開啟,則將檔案物件賦值給file,然後用for語句遍歷列印檔案的每一行。當檔案操作結束後,with語句關閉檔案。如果這段程式碼執行過程中發生異常,with也會將檔案關閉。

這段程式碼使用finally語句實現如下:

try:
    file = open("/test.txt")
    try:
        for aline in file:
            print(aline)
    except Exception as error:
        print(error)
    finally:
        file.close()
except FileNotFoundError as err:
    print(err)

我們也可以給with語句加上異常處理:

try:
    with open("/test.txt") as file:
        for aline in file:
            print(aline)
except Exception as error:
    print(error)

透過對比可以發現:with語句在進行異常處理時程式碼簡潔很多

特別說明:

不是所有的物件都可以使用with語句,只有支援上=上下文管理協議的物件才可以。目前支援上下文管理協議的物件如下:

file
decimal.Context
thread.LockType
threading.BoundedSemaphore
threading.Condition
threading.Lock
threading.RLock
threading.Semaphore

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2001/viewspace-2836289/,如需轉載,請註明出處,否則將追究法律責任。

相關文章