Python中異常和檔案

2021-10-09 20:43:49 字數 3677 閱讀 7923

程式在執行過程當中,不可避免的會出現一些錯誤,這些錯誤在程式中,我們稱其為異常。程式執行過程中,一旦出現異常將會導致程式立即終止,異常以後的**全部都不會執行! 

程式執行時出現異常,目的並不是讓我們的程式直接終止!

python是希望在出現異常時,我們可以編寫**來對異常進行處理!    

try語句

try:

**塊(可能出現錯誤的語句)

except 異常型別 as 異常名:

**塊(出現錯誤以後的處理方式)

except 異常型別 as 異常名:

**塊(出現錯誤以後的處理方式)

except 異常型別 as 異常名:

**塊(出現錯誤以後的處理方式)

else:

**塊(沒出錯時要執行的語句)    

finally:

**塊(該**塊總會執行)    

try是必須的 else語句有沒有都行

except和finally至少有乙個,如果except後不跟任何的內容,則此時它會捕獲到所有的異常,如果在except後跟著乙個異常的型別,那麼此時它只會捕獲該型別的異常,exception 是所有異常類的父類,所以如果except後跟的是exception,他也會捕獲到所有的異常,可以在異常類後邊跟著乙個 as xx 此時xx就是異常物件,也可以自定義異常類,只需要建立乙個類繼承exception即可,raise用於向外部丟擲異常,後邊可以跟乙個異常類,或異常類的例項,丟擲異常的目的,告訴呼叫者這裡呼叫時出現問題,希望你自己處理。

可以將可能出錯的**放入到try語句,這樣如果**沒有錯誤,則會正常執行,

如果出現錯誤,則會執行expect子句中的**,這樣我們就可以通過**來處理異常

避免因為乙個異常導致整個程式的終止          

當在函式**現異常時,如果在函式中對異常進行了處理,則異常不會再繼續傳播,

如果函式中沒有對異常進行處理,則異常會繼續向函式呼叫處傳播,

如果函式呼叫處處理了異常,則不再傳播,如果沒有處理則繼續向呼叫處傳播

直到傳遞到全域性作用域(主模組)如果依然沒有處理,則程式終止,並且顯示異常資訊

當程式執行過程**現異常以後,所有的異常資訊會被儲存乙個專門的異常物件中,

而異常傳播時,實際上就是異常物件拋給了呼叫處

比如 : zerodivisionerror類的物件專門用來表示除0的異常

nameerror類的物件專門用來處理變數錯誤的異常

....

在python為我們提供了多個異常物件     

- 可以使用 raise 語句來丟擲異常,

raise語句後需要跟乙個異常類 或 異常的例項

- 通過python程式來對計算機中的各種檔案進行增刪改查的操作

- i/o(input / output)

- 操作檔案的步驟:

① 開啟檔案

② 對檔案進行各種操作(讀、寫),然後儲存

③ 關閉檔案

open(file, mode='r', buffering=-1, encoding_=none, errors=none, newline=none, closefd=true, opener=none)

使用open函式來開啟乙個檔案

引數:file 要開啟的檔案的名字(路徑)

返回值:

返回乙個物件,這個物件就代表了當前開啟的檔案

建立乙個變數,來儲存檔案的名字

如果目標檔案和當前檔案在同一級目錄下,則直接使用檔名即可

在windows系統使用路徑時,可以使用/來代替 \,或者可以使用 \\ 來代替 \,表示路徑,可以使用..來返回一級目錄,如果目標檔案距離當前檔案比較遠,此時可以使用絕對路徑,絕對路徑應該從磁碟的根目錄開始書寫。

with ... as 語句

with open(file_name) as file_obj :

在with語句中可以直接使用file_obj來做檔案操作

此時這個檔案只能在with中使用,一旦with結束則檔案會自動close()

呼叫open()來開啟乙個檔案,可以將檔案分成兩種型別

一種,是純文字檔案(使用utf-8等編碼編寫的文字檔案)

一種,是二進位制檔案(、***、ppt等這些檔案)

open()開啟檔案時,預設是以文字檔案的形式開啟的,但是open()預設的編碼為none

所以處理文字檔案時,必須要指定檔案的編碼

通過 read() 來讀取檔案中的內容

如果直接呼叫read()它會將文字檔案的所有內容全部都讀取出來

如果要讀取的檔案較大的話,會一次性將檔案的內容載入到記憶體中,容易導致記憶體洩漏

所以對於較大的檔案,不要直接呼叫read()

help(file_obj.read)

read()可以接收乙個size作為引數,該引數用來指定要讀取的字元的數量

預設值為-1,它會讀取檔案中的所有字元

可以為size指定乙個值,這樣read()會讀取指定數量的字元,

每一次讀取都是從上次讀取到位置開始讀取的

如果字元的數量小於size,則會讀取剩餘所有的

如果已經讀取到了檔案的最後了,則會返回''空串

使用open()開啟檔案時必須要指定開啟檔案所要做的操作(讀、寫、追加)

如果不指定操作型別,則預設是 讀取檔案 , 而讀取檔案時是不能向檔案中寫入的

r 表示唯讀的

w 表示是可寫的,使用w來寫入檔案時,如果檔案不存在會建立檔案,如果檔案存在則會截斷檔案

截斷檔案指刪除原來檔案中的所有內容

a 表示追加內容,如果檔案不存在會建立檔案,如果檔案存在則會向檔案中追加內容

x 用來新建檔案,如果檔案不存在則建立,存在則報錯

+ 為操作符增加功能

r+ 即可讀又可寫,檔案不存在會報錯

w+a+

write()來向檔案中寫入內容,

如果操作的是乙個文字檔案的話,則write()需要傳遞乙個字串作為引數

該方法會可以分多次向檔案中寫入內容

寫入完成以後,該方法會返回寫入的字元的個數

讀取模式

t 讀取文字檔案(預設值)

b 讀取二進位制檔案

import os

from pprint import pprint

os.listdir() 獲取指定目錄的目錄結構

需要乙個路徑作為引數,會獲取到該路徑下的目錄結構,預設路徑為 . 當前目錄

該方法會返回乙個列表,目錄中的每乙個檔案(夾)的名字都是列表中的乙個元素

r = os.listdir()

os.getcwd() 獲取當前所在的目錄

r = os.getcwd()

os.chdir() 切換當前所在的目錄 作用相當於 cd

os.chdir('c:/')

r = os.getcwd()

建立目錄

os.mkdir("aaa") # 在當前目錄下建立乙個名字為 aaa 的目錄

刪除目錄

os.rmdir('abc')

open('aa.txt','w')

刪除檔案

os.remove('aa.txt')

os.rename('舊名字','新名字') 可以對乙個檔案進行重新命名,也可以用來移動乙個檔案

os.rename('aa.txt','bb.txt')

os.rename('bb.txt','c:/users/desktop/bb.txt')

pprint(r)

Python異常和檔案

try語句 try 塊 可能出現錯誤的語句 except 異常型別 as 異常名 塊 出現錯誤以後的處理 式 except 異常型別 as 異常名 塊 出現錯誤以後的處理 式 except 異常型別 as 異常名 塊 出現錯誤以後的處理 式 else 塊 沒出錯時要執 的語句 finally 塊 是...

Python之異常和檔案詳解

1.程式在執行過程中可能產生的錯誤,比如使用了不存在的索引,不同型別的計算。print 10 0 報錯2.處理異常 程式執行出現異常,目的並不是讓程式終止,而且讓程式出現異常時,我們可以編寫 進行處理。1.當在函式 現異常時,如果在函式中沒有對異常進行處理,則異常會在函式呼叫處傳播,直到傳遞到全域性...

Python(四)異常處理和檔案讀寫

什麼是錯誤和異常?作為python初學者,在剛學習python程式設計時,經常會看到一些報錯資訊。python有兩種錯誤很容易辨認 語法錯誤和異常。即便python程式的語法是正確的,在執行它的時候,也有可能發生錯誤。執行期檢測到的錯誤被稱為異常。大多數的異常都不會被程式處理,都以錯誤資訊的形式展現...