Python基礎語法之異常處理檔案讀取

2021-10-06 08:50:29 字數 3239 閱讀 4549

在程式執行過程中,不可避免出現一些錯誤例如用沒有賦值的變數

print(a) #nameerror: name 'a' is not defined

print(10/0) #zerodivisionerror: division by zero

#異常以後的**不會執行 ,例如以下**

print('hello') #hello

print(10/0) #zerodivisionerror: division by zero

print('python') #異常以後的**不會執行

程式執行時出現異常,目的並不是要終止我們的程式

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

try 語法

try:

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

except 異常型別 as 異常別名:

**塊(如果出現錯誤之後的處理方式)

except 異常型別 as 異常別名:

**塊(如果出現錯誤之後的處理方式)

finally:

**塊else:

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

print('hello') #hello

try:

print(10/0)

except:

print('出錯了。。。') #出錯了。。。

else:

print('程式正常處理')

print('python') #python

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

如果在函式中沒有處理異常,則異常會繼續想函式呼叫處傳播

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

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

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

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

def fn():

print('helle fn')

print(10/0)

f = fn()

結果helle fn

traceback (most recent call last):

file "g:/python/邏輯教育/jarry班/基礎班/day05/if.py", line 65, in f = fn()

file "g:/python/邏輯教育/jarry班/基礎班/day05/if.py", line 64, in fn

print(10/0)

zerodivisionerror: division by zero

print('異常出現前')

try:

print(a)

print(10/0)

except:

#except 後面不跟任何內容,此時他會捕獲所有的異常

#exception 是所有異常類發父類,所以如果except後面跟exception他會捕獲所有的異常

print('處理異常的邏輯。。。')

print('異常出現後。。。')

異常出現前

處理異常的邏輯。。。

異常出現後。。。

except exception as e:

print('出現異常',e,type(e))

異常出現前

出現異常 name 'a' is not defined 異常出現後。。。

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

操作檔案的步驟:1開啟問,2.對檔案進行各種操作(讀寫)然後儲存檔案

關閉檔案

檔案會有一返回值,返回乙個物件,這個物件就表示的是當前的檔案

呼叫close()方法來關閉檔案

with 。。。as 語句不用謝close()來關閉,他自帶關閉

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

呼叫open()來開啟乙個檔案,可以將檔案分為2中型別

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

open()開啟檔案時,預設的以文字檔案的形式開啟open()預設的編碼說為none,所以處理檔案是要指定編碼

通過read()讀取檔案內容時,會將檔案中所有的內容全部讀取出來。

如果對於讀取檔案比較大的話,會一次性的將檔案載入到內容中。容易導致記憶體洩漏,所以對於較大的檔案。不要直接呼叫read()

read()可以接收乙個size作為的引數,該引數用來指定要讀取字元的數量。預設值為-1,-1也就是要讀取全部的內容

每次讀取都會從上一次讀取到的位置開始,如果字元的數量小於size,則會讀取所有的。如果讀取到最後的檔案,則會返回空串

file_name = 'demo.txt'

try:

with open(file_name,encoding = 'utf-8') as file_obj;

#定義乙個變數,指定一次讀取檔案大大小

chunk = 100

while true :

content = file_obj.read(chunk)

#檢查是否讀完檔案

if not content:

讀取完成,退出迴圈

break

print(content)

except filenotfounderror:

print(file_name,'檔案不存在。。。')

readline()改方法用來讀取一行

readines()該方法用於一行一行的讀取內容,它會一次性將讀取到的內容封裝到乙個列表中返回。

write()來想檔案中希爾內容。

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

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

使用open()函式開啟檔案時,必須要指定開啟檔案要做的操作(讀、寫、追加)。如果不指定操作型別,則預設是讀取檔案,而讀取檔案是不能向檔案中寫入

r表示唯讀

w表示可以寫,使用w寫入檔案時,如果檔案不存在則會建立乙個檔案,如果檔案存在則會覆蓋檔案內容

讀取文字檔案時,size是已字元為單位,讀取二進位制檔案時,size是已位元組外單位

我們用wb來寫入二進位制檔案

python基礎之異常處理

引入 程式執行時,難免出現bug,當出現bug時,使用者可能很難明白那一堆報錯 到底是個什麼東西,為了讓使用者能更清楚知道錯誤原因或者直接對使用者將此錯誤遮蔽,異常處理就應運而生。格式 try 輸入要執行的 pass except nameerror as err 將該型別的錯誤捕獲 pass ex...

python基礎之異常處理

為了增加程式設計的友好性,避免程式出現bug時將錯誤資訊顯示給使用者,有了異常處理這個好東東.while true num1 input num1 num2 input num2 try num1 int num1 num2 int num2 except exception as ex print...

python基礎之異常處理

1.程式中難免出現錯誤,而錯誤分成兩種 1.語法錯誤 這種錯誤,根本過不了python直譯器的語法檢測,必須在程式執行前就改正 語法錯誤示範一 if 語法錯誤示範二 def test pass 語法錯誤示範三 print haha 2.邏輯錯誤 使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是...