Опять же, тот же вопрос.
Причина в том, что я до сих пор не могу заставить его работать после прочтения следующего:
- В режиме реального времени перехват stdout из другого процесса в Python
- Перехват stdout подпроцесса во время его запуска
- Как получить информацию "в реальном времени" из подпроцесса. Открыть в 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, но версия не имеет значения - мне просто нужно заставить ее работать где-то.