Не удается записать на стандартный ввод в подпроцесс 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 найти ручку к окну и написать в нее?

0 ответов

Другие вопросы по тегам