2011-10-22 1 views
3

나는 임베디드 파이썬 C API에서 code.InteractiveInterpreter을 에뮬레이트하려고한다. PyEval_Evalcode을 사용하여 사용자 입력을 평가합니다. 인터프리터에서 사용자 입력을 평가하고 출력을 문자열로 반환하려고합니다 (마치 인터프리터처럼). 그러나 PyEval_EvalcodePyObject*으로 묶인 많은 데이터 유형을 반환합니다. 내가하려는 일을 할 수있는 방법이 있습니까?파이썬 코드 평가하기 CAPI와 출력하기

제약 조건 : 포함 API를 사용하여 수행해야합니다. PyRun_RunSimpleString()을 사용하고 code.InteractiveInterpreter으로 게시 할 수 없습니다.

답변

3

PyEval_Evalcode()가 반환 한 객체는 PyObject_Repr() 또는 PyObject_Str()을 사용하여 Python 문자열로 변환 할 수 있습니다. 결과 파이썬 문자열은 PyString_AsString()으로 일반 C 문자열로 바뀔 수 있습니다.

0

나는 이진 문자열을 가지고 있으며 null로 끝나는 문자열 때문에 문자열로 반환 할 수 없습니다.

경우 (PyString_Check (유의 확률)) { CONST 숯불 S = */* * PyBytes_AsString/PyString_AsString (PyObject_Repr (유의 확률)); // ascii에서 16 진수 표현을 반환합니다. int sz = PyString_Size (pValue); // 크기가 유효 함 const char * s = PyString_AsString (pValue); // null로 끝나는 문자열 만 반환