Я прочитал несколько аналогичных вопросов и обнаружил, что это можно сделать с помощью перенаправления на уровне дескриптора файла, используя os.dup2 () перенаправить stdout и stderr внешней библиотеки в Python < /p>
Код: Выделить всё
redirect_file = tempfile.TemporaryFile(mode='w+b')
stdout_fd = sys.stdout.fileno()
sys.stdout.close()
os.dup2(redirect_file.fileno(), stdout_fd)
# call C++ library here, capture output in redirect_file
< /code>
Однако я обнаружил, что он работает только в том случае, если сценарий Python выполняется без перенаправления оболочки. С перенаправлением оболочки вывод библиотеки C ++ не будет захвачен Temp File, и поэтому я не могу сделать свою пост -обработку. < /P>
$ python foo.py # this works
$ python foo.py > redirected_output # C++ output will appear in the redirected_output directly
Подробнее здесь: https://stackoverflow.com/questions/753 ... cted-in-sh