Опять тот же вопрос.
Причина в том, что я все еще не могу заставить его работать, прочитав следующее:
- Перехват stdout из другого процесса в режиме реального времени в Python
- Перехват стандартного вывода подпроцесса во время его выполнения
- Как получить информацию в реальном времени из подпроцесса. Открыть в python (2.5)
- захват stdout в реальном времени из подпроцесса
В моем случае у меня есть консольное приложение, написанное на C, давайте возьмем, например, этот код в цикле:
tmp = 0.0;
printf("\ninput>>");
scanf_s("%f",&tmp);
printf ("\ninput was: %f",tmp);
Он постоянно читает некоторые входные и записывает некоторые выходные данные.
Мой код Python для взаимодействия с ним следующий:
p=subprocess.Popen([path],stdout=subprocess.PIPE,stdin=subprocess.PIPE)
p.stdin.write('12345\n')
for line in p.stdout:
print(">>> " + str(line.rstrip()))
p.stdout.flush()
До сих пор, когда я читал форму p.stdout
, она всегда ожидала завершения процесса и затем выводила пустую строку. Я много чего перепробовал - но результат тот же.
Я пробовал Python 2.6 и 3.1, но версия не имеет значения - мне просто нужно, чтобы он где-то работал.