Pythonで例外が発生した場合、その例外がどの行で発生したかを知ることはデバッグに非常に役立ちます。以下に、例外が発生した行を取得する方法を示します。
tracebackモジュールを使用する
Pythonのtraceback
モジュールを使用すると、例外が発生した行を簡単に取得できます。以下に一例を示します。
import traceback
try:
print(4/0)
except ZeroDivisionError:
print(traceback.format_exc())
このコードは、ZeroDivisionError
が発生した行のスタックトレースを出力します。
sysモジュールとosモジュールを使用する
sys
モジュールとos
モジュールを使用して、例外が発生したファイル名と行番号を取得することもできます。以下に一例を示します。
import sys
import os
import linecache
def PrintException():
exc_type, exc_obj, tb = sys.exc_info()
f = tb.tb_frame
lineno = tb.tb_lineno
filename = f.f_code.co_filename
linecache.checkcache(filename)
line = linecache.getline(filename, lineno, f.f_globals)
print('EXCEPTION IN ({}, LINE {} "{}"): {}'.format(filename, lineno, line.strip(), exc_obj))
try:
print(1/0)
except:
PrintException()
このコードは、例外が発生したファイル名、行番号、およびその行のコードを出力します。
以上の方法を使用すると、Pythonで例外が発生した行を効率的に取得できます。これにより、デバッグ作業が容易になります。