[PYTHON] 예외를 발생시키지 않고 python 스택 추적을 인쇄하십시오.
PYTHON예외를 발생시키지 않고 python 스택 추적을 인쇄하십시오.
내 클래스의 인스턴스 변수 중 하나가 사용 중입니다. 변수를 속성으로 만들고 싶습니다. 액세스 할 때마다 그 지점까지 이어지는 모든 코드의 스택 추적을 인쇄하고 싶습니다. 그래서 어디서 엉망인지 볼 수 있습니다. 예외가 발생하지 않은 경우 스택 추적을 어떻게 인쇄합니까? traceback.format_tb (sys.exc_info () [2])와 같은 것을 할 수있는 예외가 있는지 알고 있습니다.
또한 처음 3-4 단계는 아마도 흥미롭지 않을 것이기 때문에 마지막 3-4 단계 만 인쇄하는 것이 유용 할 수 있습니다.
해결법
-
==============================
1.traceback.print_stack () :
traceback.print_stack () :
>>> def f(): ... def g(): ... traceback.print_stack() ... g() ... >>> f() File "<stdin>", line 1, in <module> File "<stdin>", line 4, in f File "<stdin>", line 3, in g
편집 : 당신은 또한 extract_stack을 사용할 수 있습니다 (예 : stack [5 :]는 첫 번째 5 단계를 제외시키기 위해) format_list를 사용하여 print-ready stacktrace ( '\ n '.join (traceback.format_list (...) ))))
-
==============================
2.stdout에 인쇄하는 대신 로거에 전달할 문자열이 필요한 경우 다음을 사용할 수 있습니다.
stdout에 인쇄하는 대신 로거에 전달할 문자열이 필요한 경우 다음을 사용할 수 있습니다.
''.join(traceback.format_stack())
traceback.format_stack ()은 stacktrace를 형식화 된 문자열 목록으로 반환하므로 원하는 경우 슬라이스 할 수 있습니다. stacktrace의 마지막 몇 가지 요소를 얻으려면 다음을 수행하십시오.
''.join(traceback.format_stack()[-N:])
여기서 N은 관심있는 레벨의 수입니다.
from https://stackoverflow.com/questions/3925248/print-python-stack-trace-without-exception-being-raised by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] sys.exit (0)과 os._exit (0)의 차이점은 무엇입니까? (0) | 2018.10.22 |
---|---|
[PYTHON] 파이썬 : 초를 hh로 변환 : mm : ss [duplicate] (0) | 2018.10.22 |
[PYTHON] "For"루프 첫 번째 반복 (0) | 2018.10.21 |
[PYTHON] Python을 사용하여 JSON 데이터를 파일로 멋지게 인쇄 (0) | 2018.10.21 |
[PYTHON] numpy 배열의 n 번째 항목마다 서브 샘플링 (0) | 2018.10.21 |