Не удается записать на стандартный ввод в подпроцесс Windows
Я пытаюсь взаимодействовать с программой командной строки Windows, используя Python. Я использую subprocess
Модуль для этого. Ниже приведен код, который запускает программу.
kwargs = dict(stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
p = subprocess.Popen("ansys191.exe", **kwargs)
Это открывает программу с новым окном консоли. Я могу читать из его stdout
используя следующий код.
while True:
line = p.stdout.readline().strip()
if line: print(line)
if line.startswith("BEGIN:") or line.startswith("PREP7:"):
break
После запуска программа останавливается с BEGIN:
незамедлительный. Это не выход. Однако, это не работает, когда я пытаюсь написать команду stdin
, такие как следующие.
p.stdin.write("/prep7")
p.stdout.readline() #Blocks here
Вот скриншот кода и окна. Другие команды не открываются.
После прочтения команды "/prep7" программа должна записать некоторый текст в stdout
и остановиться с PREP7:
незамедлительный. Однако, если я наберу что-то в новом окне консоли, я смогу прочитать больше данных из его stdout
,
Я что-то здесь упускаю? Должен ли я использовать win32gui
найти ручку к окну и написать в нее?