python 讓繁瑣工作自動化 除錯

2021-10-08 20:58:25 字數 4040 閱讀 9001

將可能出錯的程式放在try子句中,如果出現乙個錯誤,程式就會立刻轉到except處,執行完except處的**後,程式繼續往下執行。

def

spam

(divideby)

:try

:return

42/divideby

except

:print

('erro:invalid argument!'

)print

(spam(1)

)print

(spam(0)

)print

(spam(2)

)

輸出結果

42.0

erro:invalid argument!

none

21.0

丟擲異常使用raise語句。

例如:raise exception('this is the error message.')

在執行中如果遇到錯誤,就會丟擲this is the error message.

示例程式:

def

boxprint

(symbol, width, height):if

len(symbol)!=1

:raise exception(

'symbol must be a single character string.'

)if width <=2:

raise exception(

'width must be greater than 2.'

)if height <=2:

raise exception(

'height must be greater than 2.'

)#若條件不滿足則丟擲錯誤資訊

print

(symbol * width)

for i in

range

(height -2)

:print

(symbol +

(' '

*(width -2)

)+ symbol)

print

(symbol * width)

(1) 直接呼叫上述函式

for sym, w, h in((

'*',4,

4),(

'o',20,

5),(

'x',1,

3),(

'zz',3

,3))

:boxprint(sym, w, h)

輸出結果為

在執行到('x', 1, 3)時出錯,錯誤資訊為:

traceback (most recent call last)

: file "d:\資料\python\未命名0.py"

, line 15,in

boxprint(sym, w, h)

file "d:\資料\python\未命名0.py"

, line 5

,in boxprint

raise exception(

'width must be greater than 2.'

)exception: width must be greater than 2

.

出錯之後不再繼續執行。

(2) 配合try …… except使用

for sym, w, h in((

'*',4,

4),(

'o',20,

5),(

'x',1,

3),(

'zz',3

,3))

:try

: boxprint(sym, w, h)

except exception as err:

# 將exception的錯誤資訊儲存在變數err中

print(+

str(err)

)

輸出結果為:

在執行到('x', 1, 3)時出錯,出錯後繼續向後執行,錯誤資訊為:

.except exception as err:語句可以將函式返回的exception物件儲存在err變數中,呼叫str(err)可以將exception中的錯誤資訊轉換為字串輸出。

如果python在執行時遇到錯誤,就會生成一些資訊,包括了:出錯訊息、導致該錯誤的**行號,以及導致該錯誤的函式呼叫的序列,類似下面的資訊:

traceback (most recent call last)

: file "d:\資料\python\未命名0.py"

, line 15,in

boxprint(sym, w, h)

file "d:\資料\python\未命名0.py"

, line 5

,in boxprint

raise exception(

'width must be greater than 2.'

)exception: width must be greater than 2

.

但是,使用try……except能直接顯示反向跟蹤資訊,可以通過呼叫traceback.format_exc()獲取表示反向跟蹤的字串。在呼叫時需要匯入traceback模組

import traceback

for sym, w, h in((

'*',4,

4),(

'o',20,

5),(

'x',1,

3),(

'zz',3

,3))

:try

: boxprint(sym, w, h)

except

: trace=traceback.format_exc(

)print

(trace)

返回資訊為:

traceback (most recent call last)

: file "d:\資料\python\除錯\丟擲異常.py"

, line 18,in

boxprint(sym, w, h)

file "d:\資料\python\除錯\丟擲異常.py"

, line 5

,in boxprint

raise exception(

'width must be greater than 2.'

)exception: width must be greater than 2

.traceback (most recent call last)

: file "d:\資料\python\除錯\丟擲異常.py"

, line 18,in

boxprint(sym, w, h)

file "d:\資料\python\除錯\丟擲異常.py"

, line 3

,in boxprint

raise exception(

'symbol must be a single character string.'

)exception: symbol must be a single character string.

讓繁瑣的工作自動化 python處理CSV檔案

1.環境 1.python3.8 2.pycharm2020.1 2.讀取本期例項資料 首先匯入csv模組,不需要安裝,python自帶的。import csv要想用csv模組讀取csv檔案資料,需要先建立乙個reader物件,reader可以遍歷檔案的每一行。注意 reader物件只能迴圈遍歷一次...

Python 程式設計快速上手 讓繁瑣工作自動化

第一部分 python程式設計基礎 第 1 章 python基礎 第 2 章 控制流 第 3 章 函式 第 4 章 列表 第 5 章 字典和結構化資料 第 6 章 字串操作 第二部分 自動化任務 第 7 章 模式匹配與正規表示式 第 8 章 讀寫檔案 第 9 章 組織檔案 第 10 章 除錯 第 1...

Python程式設計 讓繁瑣的工作自動化(二)控制流

1.if,elif,else 關鍵字 if elif,else 任意情況下,如果其中一條語句結果為true,那麼另外的所有語句都會跳過,同c c 2.while 迴圈 while 迴圈語句同c c 語言,只要while 的條件為真,就會一直執行迴圈內語句塊 name while name your ...