Проблема, с которой я сейчас сталкиваюсь, связана с библиотекой подпроцессов для python. У меня есть бинарная программа, которая, когда я ее выполняю, запрашивает имя, а затем мне нужно дать ей имя. После того, как я назову это имя, мне нужно написать что-нибудь интересное (просто пример не имеет значения, что я пишу). Мне также нужно, чтобы это повторялось, как если бы программа запрашивала другое имя еще 5 раз (просто пример). Ход программы выглядит примерно так:
user@linux# ./exec
Enter access name: pythonUser!
access granted. Write some notes.
>My favorite snack is a Foo Bar!
>Taking notes is my favorite part of the day!
Good notes! Closing now.
По сути, мне нужно иметь возможность читать вывод программы, и если в выводе есть строка, мне нужно иметь возможность записать определенный вывод в программу.
Я посмотрел другие SO-посты и прочитал библиотеку подпроцессов, и все это очень важно, и мне трудно понять все это.
Итак, мой текущий python-код выглядит так:
import subprocess
p=subprocess.Popen(['./exec'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
execOutput = p.stdout.readline()
if ("Enter access name:" in execOutput):
p.communicate(input="pythonUser")
В настоящее время он просто зависает на execOutput = p.stdout.readline()
, и я не уверен, почему.
Заранее спасибо за помощь!