exec
을 통해 몇 가지 기능을 만들고 있습니다. 오류 일 수 있습니다. 그러나 Python 오류가 발생하면 오류가 발생한 행은 표시되지 않습니다. 사용 예를 들어파일 "<string>"라인 미리보기로 추적하십시오.
:
Traceback (most recent call last):
File "...", line 10, in <module>
fn()
File "<string>", line 2, in fn
Exception
것은 우리가하지만, 평가 후면 사용하지 않는 경우 :
fn_str = '''\
def fn():
raise Exception()
'''
globs = {}
exec(fn_str, globs)
fn = globs['fn']
fn()
은 우리에게 출력을 제공합니다. 나는 __traceback__
를 사용하여 살펴본 결과
def fn():
raise Exception()
fn()
Traceback (most recent call last):
File "...", line 4, in <module>
fn()
File "...", line 2, in fn
raise Exception()
Exception
는, 그러나 나는 '파일에서 역 추적에 추가 할 수있는 방법을 찾을 수 없습니다 : 그런 다음 우리는 프로그램에 오류가 발생한 라인을 얻을 ' 선. 그래서 내가 할 수있는 최선이었다이 :
fn_str = '''\
def fn():
try:
raise Exception()
except BaseException as e:
tb = e.__traceback__
if 1 <= tb.tb_lineno <= len(fn_lines):
e.args = ((e.args[0] if e.args else '') + ' - ' + fn_lines[tb.tb_lineno - 1].strip(),)
raise
'''
globs = {'fn_lines': fn_str.split('\n')}
exec(fn_str, globs)
fn = globs['fn']
fn()
Traceback (most recent call last):
File "...", line 16, in <module>
fn()
File "<string>", line 3, in fn
Exception: - raise Exception()
- raise Exception()
가 나오는 곳 eval
통화를 다른 코드는,이 혼란 될 경우이 가장 큰 문제입니다.
오류 코드에 오류 코드를 제공하는 방법이 있습니까?
, 감사합니다. 'NamedTemporaryFile'을 사용할 때 몇 가지 Windows 사용 권한 오류가 발생했습니다. 그러나 파일을 만드는 데 다른 방법을 사용하면 효과적이었습니다. – Peilonrayz