python中用於處理異常棧的模組是traceback模組,它提供了print_exception、format_exception等輸出異常棧等常用的工具函式。
import sys
import traceback
def func(divisor, dividend):
return divisor / dividend
if __name__ == '__main__':
try: func(1, 0)
except exception as e:
print "print exc"
traceback.print_exc(file=sys.stdout)
輸出結果:
*************** restart: d:\now\test_python\test_traceback.py ***************
print exc
traceback (most recent call last):
file "d:\now\test_python\test_traceback.py", line 6, in
try: func(1, 0)
file "d:\now\test_python\test_traceback.py", line 4, in func
return divisor / dividend
zerodivisionerror: integer division or modulo by zero
traceback.print_exc()函式只是traceback.print_exception()函式的乙個簡寫形式,而它們獲取異常相關的資料都是通過sys.exc_info()函式得到的。
import sys
import traceback
def func(divisor, dividend):
return divisor / dividend
if __name__ == '__main__':
try: func(1, 0)
except exception as e:
print "print exception()"
exc_type,exc_value,exc_tb = sys.exc_info()
print "the exc type is:",exc_type
print "the exc value is:",exc_value
print "the exc tb is:",exc_tb
traceback.print_exception(exc_type,exc_value,exc_tb)
輸出結果:
*************** restart: d:\now\test_python\test_traceback.py ***************
print exception()
the exc type is:
the exc value is: integer division or modulo by zero
the exc tb is:
traceback (most recent call last):
file "d:\now\test_python\test_traceback.py", line 6, in
try: func(1, 0)
file "d:\now\test_python\test_traceback.py", line 4, in func
return divisor / dividend
zerodivisionerror: integer division or modulo by zero
sys.exc_info()返回的值是乙個元組,其中第乙個元素,exc_type是異常的物件型別,exc_value是異常的值,exc_tb是乙個traceback物件,物件中包含出錯的行數、位置等資料。然後通過print_exception函式對這些異常資料進行整理輸出。
traceback模組提供了extract_tb函式來更加詳細的解釋traceback物件所包含的資料:
import sys
import traceback
def func(divisor, dividend):
return divisor / dividend
if __name__ == '__main__':
try:
func(1, 0)
except:
_, _, exc_tb = sys.exc_info()
for filename, linenum, funcname, source in traceback.extract_tb(exc_tb):
print "%-23s:%s '%s' in %s()" % (filename, linenum, source, funcname)
輸出結果:
*************** restart: d:\now\test_python\test_traceback.py ***************
d:\now\test_python\test_traceback.py:7 'func(1, 0)' in ()
d:\now\test_python\test_traceback.py:4 'return divisor / dividend' in func()
linux一些基本操作記錄
編緝檔案 nano 查詢檔案 find iname 檔名 rpm的檔案用 rpm ivh rpm命令安裝,用man rpm可以得到幫助 tar.gz的檔案用 tar zxvf tar.gz命令解壓縮,這是乙個壓縮包,解壓到當前目錄下.force tar的檔案用 tar xvf tar命令解壓縮,這是...
一些python模組的安裝
開始接觸python程式設計,先前一直用的是標準庫,但平常還是要用到很多非標準庫的模組。下面記錄一下安裝一些模組的過程 目前用的是win7x64 beautifulsoup是一款優秀的html xml標籤解析工具,這裡有bs官方中文教程。安裝過程 用cmd切換到解壓檔案目錄 python setup...
python之路 一些常用模組
模組,用一砣 實現了某個功能的 集合。類似於函式式程式設計和面向過程程式設計,函式式程式設計則完成乙個功能,其他 用來呼叫即可,提供了 的重用性和 間的耦合。而對於乙個複雜的功能來,可能需要多個函式才能完成 函式又可以在不同的.py檔案中 n個 py 檔案組成的 集合就稱為模組。模組一般分為三種 i...