Вы можете перехватить stdout
перед записью в ваш код C
, а затем обработать выходное значение.
import sys
import StringIO
buffer = StringIO.StringIO()
# redirect stdout to a buffer
sys.stdout = buffer
# call the c code with ctypes
# process the buffer
# recover the old stdout
sys.stdout = sys.__stdout__
Однако было бы проще и приятнее передать буфер в код на языке C, и вместо printf
-вхождения выходных значений вы записали бы их в предоставленный буфер.
Или, что еще лучше, вы можете передать byref
a c_char_p
, выделить для него память внутри кода C
, обновить буфер с выходным значением, а затем использовать буфер в Python
. Не забудьте освободить память (вы должны сделать оболочку ctypes
для функции free
).