Python異常捕獲以及簡單錯誤日志生成方式
Python異常捕獲及簡單錯誤日志生成
最近,本人在做一個預(yù)測項目。我的工作主要是從數(shù)據(jù)庫中提取數(shù)據(jù)分析、進行數(shù)值預(yù)測、將預(yù)測值存儲數(shù)據(jù)庫、程序打包exe等。
在實際的exe文件運行過程中可能會因為各種原因?qū)е鲁绦蜿P(guān)閉,無法了解錯誤原因。
為了比較直觀地了解錯誤原因,本人在程序中加入了異常捕獲模塊并自動生成錯誤日志。
下面,我將用一個例子來實現(xiàn)上述功能的實現(xiàn)。
例子主要實現(xiàn)數(shù)值相減,如果輸入的不是數(shù)字,那么程序是會報錯的,那么此時應(yīng)該會在程序路徑下生成一個txt格式的錯誤日志。
話不多說,直接上代碼
import os if __name__ == '__main__': try: a = 1 print('請輸入一個數(shù)字') b = input() c = a-int(b) print('%d-%d=%d' % (a, int(b), c)) except Exception as err: print("err %s: " % err) rootDir = os.path.split(os.path.realpath(__file__))[0] blogpath = os.path.join(rootDir, 'test1.txt') f = open(blogpath, 'w+') f.writelines(repr(err)) f.close()
代碼無需使用任何第三方包,直接使用python常用的異常捕獲模塊try... except...finally來捕獲程序中的異常,然后使用txt文件保存錯誤信息。
正常運行下,結(jié)果如下:
程序錯誤,會在對應(yīng)程序路徑下自動生成錯誤日志。
結(jié)果如下:
錯誤日志生成效果如下:
此外,這里再介紹一種升級版,代碼如下:
import os import traceback if __name__ == '__main__': try: a = 1 print('請輸入一個數(shù)字') b = input() c = a-int(b) print('%d-%d=%d' % (a, int(b), c)) except Exception: print(traceback.format_exc()) rootDir = os.path.split(os.path.realpath(__file__))[0] blogpath = os.path.join(rootDir, 'test1.txt') f = open(blogpath, 'w+') f.writelines(str(traceback.format_exc())) f.close()
升級版生成的錯誤日志如下:
從生成日志結(jié)果我們可以發(fā)現(xiàn)升級版的錯誤可以定位到具體代碼行,而前者只能返回錯誤類型。大家根據(jù)自己需求選擇吧。
總結(jié)
好了,這就Python異常捕獲和簡單錯誤日志生成啦。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
人工智能——K-Means聚類算法及Python實現(xiàn)
這篇文章主要介紹了人工智能——K-Means聚類算法及Python實現(xiàn),一個能夠找到我圈出的這?些點集的算法,就被稱為聚類算法,下面就來看看文章具體的介紹吧2022-01-01python使用gTTS實現(xiàn)文本轉(zhuǎn)語音功能
gTTS(Google?Text-to-Speech),?這個庫是Google的Text-to-Speech?API的一個接口,提供了一種簡單的方式來生成聽起來自然的語言,下面我們就來看看如何使用gTTS實現(xiàn)文本轉(zhuǎn)語音功能吧2024-03-03python數(shù)據(jù)庫編程 Mysql實現(xiàn)通訊錄
這篇文章主要為大家詳細介紹了python數(shù)據(jù)庫編程,Mysql實現(xiàn)通訊錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03python讀寫數(shù)據(jù)讀寫csv文件(pandas用法)
這篇文章主要介紹了python讀寫數(shù)據(jù)讀寫csv文件(pandas用法),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12