python - 子流程 | 脚本到脚本连续输入/输出
问题描述
一直在互联网上试图找到解决方案。
我的目标:
总共两个脚本。
首先:发送用户输入 - 并锁定脚本 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()
我遇到的大多数问题是:
- 处理冻结/挂起。
- 子进程使脚本 2 打开接收、打印和关闭。
我已经搜索了整个互联网,到目前为止一直在使用 Subprocess Popen、特定的 Stdin 和 Stdout 而不是通信,因为它使我的整个 .Py 挂起。由于堆栈溢出,一些人建议使用不再支持的名为 Pexpect 的模块。我搞不清楚了。是否有我正在搜索的模块,可以用子流程完成吗?
解决方案
推荐阅读
- r - 如何在R中使用条件迭代wrt组变量运行双循环
- c - 在 c 上按位和 unsigned int 得到错误答案?
- javascript - 我只想为那些拥有 ManageMessages 权限的角色创建我的 nuke 命令。我该怎么做?
- javascript - 如何在网上搜索错误已经发布
- ruby-on-rails - HTTP_ORIGIN 总是返回 nil
- loops - 在 python 的 for 循环中更新 matplotlib 图形
- javascript - 当元素存在时'classList'属性返回null?
- c++ - 用qt绘制gps点的最佳方法
- java - ChartJS/High Charts Radar chart - 悬停时出现的每个类别的不同径向轴标签
- flutter - 如何在颤振中使用没有项目构建器的索引