python日誌和異常

2021-08-21 04:51:15 字數 3881 閱讀 6142

異常:

try:

except異常型別,捕獲異常 處理異常 也可以巢狀   除了。。。

except exception as xx:未知錯誤。如果之前的都沒有,就抓所有

else:沒有錯誤

可以寫入多個except 捕獲異常:

except 異常型別 as xx:——具體的異常資訊物件

執行了乙個異常後不會繼續執行下面的異常

(except(可以寫多個異常型別),可以統一執行的時候用,但是不知道具體錯誤資訊)

exception:可以判斷所有錯誤,但不知道是哪乙個錯誤型別,無法定位,建議最後用,語法錯誤無法抓住,比如縮排

finally:不管有沒有異常一定會執行 異常的終結者, 一般把關閉的操作寫入這裡 

遇到return 先看有沒有finally,如果有先執行finally在return

exit()退出程式對本身方法沒有影響 對下面其他異常的有影響

自定義異常:raise

raise 後面可以自定義異常 用try捕獲 輸出異常

try:

raise  ***x(" ")

except ***x as x:

日誌:可以檢視日常登入、異常等日誌資訊,有日誌檔案,按照日誌級別進行列印 匯入日誌

日誌級別:

critical (危急)> error(錯誤) > warning(警告) > info (資訊)> debug(除錯),notset(沒有設定)

級別越高列印的日誌越少,反之亦然,即:

debug    : 列印全部的日誌(notset等同於debug)

info     :    列印info,warning,error,critical級別的日誌

warning  : 列印warning,error,critical級別的日誌 

error    :    列印error,critical級別的日誌

建立示例:

可以建立乙個檔案(如:a)並按照設定的格式來儲存日誌資訊:

(如果沒有建立會預設在當前路徑下自動建立,檢視檔案時需要轉成 gbk)

import logging    #先導入日誌

***日誌格式 = "%(asctime)s - %(levelname)s - %(message)s" 

#輸出格式         #日誌日期    #日誌級別錯誤型別  #輸出日誌資訊內容

logging.basicconfig(filename='a.txt',level=logging.debug,format=***)

#呼叫固定方法     #輸出到a這個檔名裡  #level定義級別    #format按照哪個格式去輸出

可以定義乙個函式方法設定捕獲日誌:

示例:def test():

try:

a=int(input("請輸入乙個被除數:"))   #設定乙個程式執行

b=int(input("請輸入乙個除數:"))

print(a/b)

return

except (valueerror):                        ——#設定出現那種異常 設定匯入日誌級別

logging.debug("只能輸入數字!")  ——#輸入設定的資訊

except zerodivisionerror:                #同上

logging.info("除數不能為0" )          

else:

print("else...")

finally:

print("程式結束")

test()

日誌格式:

logging.basicconfig()函式中的具體引數:

filename:   指定的檔名建立filedhandler,這樣日誌會被儲存在指定的檔案中;

filemode:   檔案開啟方式,在指定了filename時使用這個引數,預設值為「w」還可指定為「a」;

format:      指定handler使用的日誌顯示格式;

level:         設定rootlogger的日誌級別

stream:     用指定的stream建立streamhandler。可以指定輸出到sys.stderr,sys.stdout或者檔案,預設為sys.stderr。

若同時列出了filename和stream兩個引數,則stream引數會被忽略。

format引數中可能用到的格式化資訊:

%(name)s                 logger的名字

%(levelno)s               數字形式的日誌級別

%(levelname)s           文字形式的日誌級別

%(pathname)s           呼叫日誌輸出函式的模組的完整路徑名,可能沒有

%(filename)s             呼叫日誌輸出函式的模組的檔名

%(module)s               呼叫日誌輸出函式的模組名

%(funcname)s           呼叫日誌輸出函式的函式名

%(lineno)d                 呼叫日誌輸出函式的語句所在的**行

%(created)f                當前時間,用unix標準的表示時間的浮 點數表

%(relativecreated)d    輸出日誌資訊時的,自logger建立以 來的毫秒數

%(asctime)s                字串形式的當前時間。預設格式是 "年-月-日 時:分:秒,毫秒"

%(thread)d                 執行緒id。可能沒有

%(threadname)s        執行緒名。可能沒有

%(process)d               程序id。可能沒有

%(message)s              使用者輸出的訊息

python中時間日期格式化符號:

%y                    兩位數的年份表示(00-99)

%y                    四位數的年份表示(000-9999)

%m                   月份(01-12)

%d                    月內中的一天(0-31)

%h                   24小時制小時數(0-23)

%i                     12小時制小時數(01-12)

%m                   分鐘數(00=59)

%s                    秒(00-59)

%a                    本地簡化星期名稱

%a                    本地完整星期名稱

%b                    本地簡化的月份名稱

%b                    本地完整的月份名稱

%c                    本地相應的日期表示和時間表示

%j                     年內的一天(001-366)

%p                    本地a.m.或p.m.的等價符

%u                    一年中的星期數(00-53)星期天為星期的開始

%w                    星期(0-6),星期天為星期的開始

%w                   一年中的星期數(00-53)星期一為星期的開始

%x                     本地相應的日期表示

%x                     本地相應的時間表示

%z                     當前時區的名稱

%%                    %號本身

Python 異常和日誌

一 異常 1 異常 異常通常可以看做是程式的錯誤,代表程式是有缺陷的。異常型別 異常 描述 baseexception 所有異常的基類 systemexit 直譯器請求退出 exception 常規錯誤的基類 stopiteration 迭代器沒有更多的值 generatorexit 生成器 gen...

python日誌和異常

日誌 異常 2.異常 try捕獲由python或程式本身引發的異常 raise 手工地引發乙個異常 為什麼要使用異常 錯誤處理,當python檢查以程式執行時的錯誤就引發異常,你可以在程式裡捕捉和處理這些錯誤,或者忽略它們。事件通知,異常也可以作為某種條件的訊號,而不需要在程式裡傳送結果標誌或顯式地...

異常和日誌

class excption exception 自定義異常類 pass try input 請輸入性別 if 男 and 女 raise exception 性別只能是男或女 except excption as ex print ex except exception as ex print e...