문제

내가한다면 (예 :

 open("/snafu/fnord")

Python (및 파일이 존재하지 않음)에서는 추적 및 메시지가 표시됩니다.

 IOError: [Errno 2] No such file or directory: '/snafu/fnord'

Python의 C API (예 : C 프로그램에 포함 된 Python 통역사)와 함께 위의 문자열을 얻고 싶습니다. 콘솔에 출력하지 않고 문자열로 필요합니다.

와 함께 PyErr_Fetch() 예외와 값의 유형 객체를 얻을 수 있습니다. 위의 예에서 값은 튜플입니다.

 (2, 'No such file or directory', '/snafu/fnord')

내가 얻은 정보에서 쉬운 방법이 있습니까? PyErr_Fetch() 문자열에 Python 통역사가 표시됩니까? (각 예외 유형에 대해 그러한 문자열을 구성하는 데 포함되지 않는 하나는 직접 유형입니다.)

도움이 되었습니까?

해결책

Python 예외는 예외 인스턴스에서 "str ()"를 실행하여 인쇄된다고 생각합니다.이 인스턴스는 관심있는 형식의 문자열을 반환합니다. PyObject_Str() 여기에 설명 된 방법 :

https://docs.python.org/c-api/object.html

행운을 빕니다!

업데이트: 두 번째 요소가 왜 당신에게 반환되는지 약간 혼란 스러워요 PyErr_Fetch() 문자열입니다. 내 생각에 당신은 "정규화되지 않은 예외"를 받고 있으며 PyErr_NormalizeException() 그 튜플을 원하는 것처럼 문자열로 형식화 할 수있는 "실제"예외로 바꾸려면.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top