Я пытаюсь выполнить программу python из другой программы python, используя библиотеку pexpect
, но не получаю ожидаемого поведения.
Я хотел бы получить вывод первой программы (prog1.py
) для отображения в реальном времени на терминале второй программы (prog2.py
). Используя child.after
, я получаю плохо отформатированный вывод: все \n
и \r
печатаются на выходе вместо того, чтобы правильно использоваться в качестве конца строки.
child = pexpect.spawn('python3 /home/robb/Workspace/prog1.py')
child.expect(".*do:")
child.sendline(sys.argv[1])
print(child.after)
Я получаю все выходные данные в одной строке :
b'Initializing database...\r\nDone initializing database!\r\n******************************\r\nProgram running\r\n******************************\r\n1. First Option\r\n2. Second Option\r\n\r\nPlease input number of action you want to do:'
Кроме того, ответ на вопрос (в данном случае sys.argv[1]
) даже не появляется. Как правильно отобразить вывод prog1
?
Использование print(child.before)
Я получаю еще худший вывод, просто это:
b''