首页 > 解决方案 > 子流程 | 脚本到脚本连续输入/输出

问题描述

一直在互联网上试图找到解决方案。

我的目标:

总共两个脚本。

首先:发送用户输入 - 并锁定脚本 2 打印的内容。

第二:接收用户输入,打印它。

例子:

脚本 1 发送“嗨”

脚本 2:打印(“收到用户输入”)

脚本 1:捕获脚本 2 输出(在本例中为:“收到用户输入”)

有什么问题?

脚本 2 是一个类似于脚本的终端。它假设永远运行,只是等待用户输入(在我们的例子中等待脚本 1 提供它) 弹出、发送、接收和关闭不是我的目标。

因此,基本上脚本 2 进程始终处于打开状态,而脚本 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()

我遇到的大多数问题是:

我已经搜索了整个互联网,到目前为止一直在使用 Subprocess Popen、特定的 Stdin 和 Stdout 而不是通信,因为它使我的整个 .Py 挂起。由于堆栈溢出,一些人建议使用不再支持的名为 Pexpect 的模块。我搞不清楚了。是否有我正在搜索的模块,可以用子流程完成吗?

标签: pythonsubprocess

解决方案


推荐阅读