使两个脚本进行通信

2024-01-19

我必须使两个程序(例如“脚本 A”(.py)和“脚本 B”(.exe))进行通信。 两个程序都处于无限循环中:脚本 A 需要写入脚本 B 的 stdin,然后读取脚本 B 的 stdout,然后再次写入,等等。脚本 B 我无法更改。

这两个文件都在我的硬盘上,所以我必须有比网络更好的方法来解决这个问题。不过,我可以用脚本 A 写入文件。 这不是课程作业,我正在为游戏编写 GUI,并且我已经对一些 AI 进行了预编程。 我想过使用管道(python scripta.py | scriptb.exe),但这似乎需要脚本 A 在脚本 B 执行之前完成。话又说回来,由于我从未使用过管道,我可能错过了一些明显的东西。

我更希望所需的工具是标准库的一部分,但如果不是,那就太糟糕了。

该解决方案必须同时适用于 Linux 和 Windows。 你们中有人能指出我正确的方向吗? 感谢您的时间。


如果您使用 subprocess 模块从“脚本 A”中启动“脚本 B”,您将能够直接与其 stdin 和 stdout 交互。例如:

from subprocess import Popen, PIPE

prog = Popen("scriptA.exe", shell=True, stdin=PIPE, stdout=PIPE)

prog.stdin.write("This will go to script A\n")
print prog.stdout.read()

prog.wait() # Wait for scriptA to finish

请小心,因为对 read 的调用将被阻止,这意味着如果脚本没有任何可打印的内容,则调用将挂起,直到它打印为止。避免这种情况的最简单方法是使用线程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使两个脚本进行通信 的相关文章

随机推荐