程式在執行過程當中,不可避免的會出現一些錯誤,這些錯誤在程式中,我們稱其為異常。程式執行過程中,一旦出現異常將會導致程式立即終止,異常以後的**全部都不會執行!
程式執行時出現異常,目的並不是讓我們的程式直接終止!
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程式的語法是正確的,在執行它的時候,也有可能發生錯誤。執行期檢測到的錯誤被稱為異常。大多數的異常都不會被程式處理,都以錯誤資訊的形式展現...