Подпроцесс | Скрипт для скрипта непрерывного ввода / вывода - PullRequest
0 голосов
/ 10 апреля 2019

Был в интернете, пытаясь найти решение.

Моя цель:

Всего два скрипта.

Во-первых: отправка пользовательского ввода и фиксация того, что печатает сценарий 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, который больше не поддерживается. Я потерян. Есть ли модуль для того, что я ищу, это можно сделать с помощью подпроцесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...