Был в интернете, пытаясь найти решение.
Моя цель:
Всего два скрипта.
Во-первых: отправка пользовательского ввода и фиксация того, что печатает сценарий 2.
Второе: получение пользовательского ввода, его печать.
Пример:
Сценарий 1 отправляет «Привет»
Сценарий 2: Печать («Пользовательский ввод получен»)
Сценарий 1: перехват выходных данных сценария 2 (в данном случае это «Пользовательский ввод получен»)
В чем прикол?
Скрипт 2 - это скрипт, подобный терминалу. предполагается, что он будет работать вечно, просто ожидая ввода данных пользователем (в нашем случае ожидание сценария 1 для его подачи)
Пополнение, отправка, получение и закрытие - это не то, к чему я стремлюсь.
Таким образом, по сути процесс Script 2 всегда открыт, в то время как Script 1 можно принудительно открывать, отправлять, перехватывать выходные данные и закрывать.
Минимальный пример кода:
from subprocess import Popen, PIPE
def runScript(file, fileName):
proc = Popen([file], stdin=PIPE, stdout=PIPE, shell=False)
if fileName == "Script2.py"
proc.stdin.write("Something")
proc.stdin.flush()
proc.stdout.readline()
Большинство проблем, с которыми я столкнулся, были:
- Процессы замораживания / зависания.
- Подпроцесс заставляет Script 2 открывать прием, печать и закрытие.
Я искал весь интернет, пока использовал Subprocess Popen, конкретные Stdin и Stdout, а не общение, так как это заставило меня повиснуть.
Было переполнение стека, некоторые предложили модуль с именем Pexpect, который больше не поддерживается. Я потерян. Есть ли модуль для того, что я ищу, это можно сделать с помощью подпроцесса.