чтение внешнего потока stdout из python

Я надеюсь, что я не путаюсь. Я хочу прочитать поток stdout из внешней программы (программы C ++ с внешним SDK), которая в настоящее время отправляет свои команды printf в окно консоли win32 (стандартное окно вывода из Visual Studio). Это приложение (.exe) в активном (Win32) режиме и открывает отдельное окно cmd для отображения вывода (не в отладчике Visual Studio).

Я хочу захватить команды printf, выполняемые в этой программе, из внешнего скрипта на python. В большинстве решений / вопросов я рассмотрел использование Popen, subprocess или ctypes, которые работают только в том случае, если программа C / C ++ запускается из Python (а не отдельно).

Я посмотрел на этот вопрос. Как захватить интерпретатор Python и вывод CMD из Python

Один из фрагментов кода, который он имеет для monkeypatching, который говорит, что это можно сделать, —

import sys
import StringIO

s = StringIO.StringIO()

sys.stdout = s

print "hey, this isn't going to stdout at all!"print "where is it ?"
sys.stderr.write('It actually went to a StringIO object, I will show you now:\n')
sys.stderr.write(s.getvalue())

Тем не менее, это работает только с тем, что я делаю из интерпретатора Python. Насколько я понимаю, sys.stdout зависит от интерпретатора, и всякий раз, когда я устанавливаю sys.stdout для объекта StringIO, он только перенаправляет stdout (s), запущенные в этом интерпретаторе python, на объект StringIO.

Как расширить эту возможность на другие окна CMD / wind32?

Я рассмотрел запуск приложения C изнутри python и знаю, как перенаправить вывод, используя эту технику. Тем не менее, я хочу запустить свое приложение на C / C ++ отдельно, используя Visual Studio, и найти способ для сценария на Python читать его содержимое.

Любые полезные указатели очень ценятся!

РЕДАКТИРОВАТЬ: отредактировал описание, чтобы сделать визуальную часть студии немного более понятной.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]