python3 踩坑之 異常機制處理檔案關閉

2021-08-29 14:18:22 字數 801 閱讀 8496

異常處理機制可以使我們的程式在遇到錯誤或非預期的時候不會終止程式的執行,提公升友好性。在檔案操作,尤其是關閉檔案時,檔案開啟的過程中可能出現了異常,這時可以使用異常處理機制來關閉檔案控制代碼

最本能的**如下:

try:

fh = open("c:\a.py", "r")

finally:

print ("關閉檔案")

fh.close()

但是執行之後會出現完全相反的效果,不但沒有捕獲異常還增加了新的異常,結果如下:

這是因為由於指定的c:\a.py根本不存在,導致fh變數沒有初始值,那麼在finally中直接對fh進行關閉操作就會丟擲變數沒有定義的異常

通用的處理開啟檔案異常的方式是使用巢狀的try;先等檔案成功開啟後,在用try...finally做內層的異常處理,在finally中執行關閉檔案的操作。**如下:

try:

fh = open(r"f:\a.py", "r",encoding='utf-8')

try:

content = fh.read()

print (content)

finally:

print ("關閉檔案")

fh.close()

except ioerror:

print ("error: 沒有找到檔案或讀取檔案失敗")

python3爬蟲踩坑記錄篇(一)

最近在寫 的時候經常報錯,能力有限,再此只提供解決辦法,如有錯誤請及時糾正 1 scrapy做post提交data鍵值都是字串,如有漢字或數值型別先轉字串 yield scrapy.formrequest url start url,headers headers,method post formd...

Python3之異常with語句

語法 with 表示式1 as 變數1 表示式2 as 變數2 語句塊with的作用 使用於對資源進行訪問的場合,確保使用過程中不管是否發生異常都會執行必須的 清理 操作,並釋放資源 如 檔案開啟後自動關閉,執行緒中鎖的自動獲取和釋放等。語法說明 as子句中的變數用於繫結表示式執行後生成的物件 wi...

Python3 傳送郵件踩坑記錄

新手學習python3.5,根據教程試一試使用python3.5中的smtplib模組傳送電子郵件。出現多個問題 1 error 無法傳送郵件.case 550,b user has no permission 和 error 無法傳送郵件.case 535,b error authenticati...