让两个脚本进行通信
我需要让两个程序(比如一个是“脚本 A”(.py 文件),另一个是“脚本 B”(.exe 文件))进行通信。 这两个程序都是在无限循环中运行:脚本 A 需要向脚本 B 的标准输入(stdin)写入数据,然后再读取脚本 B 的标准输出(stdout),接着再写入数据,依此类推。而脚本 B 我不能修改。
这两个文件都在我的硬盘上,所以我觉得应该有比网络通信更好的解决办法。不过,我可以用脚本 A 来写文件。 这不是课程作业,我是在为一个游戏写一个图形界面,并且我有一些预先编程好的 AI。 我考虑过使用管道(比如 python scripta.py | scriptb.exe),但这似乎要求脚本 A 必须先完成,脚本 B 才能执行。再说了,我从来没有使用过管道,可能错过了一些明显的东西。
我希望使用的工具最好是标准库的一部分,但如果不是,那也没办法。
这个解决方案需要在 Linux 和 Windows 上都能工作。 有没有人能给我指个方向?谢谢你们的时间。
2 个回答
0
你可能会想看看这个链接:进程间通信和网络。
6
如果你在“脚本 A”中使用 subprocess 模块启动“脚本 B”,你就可以直接和“脚本 B”的输入和输出进行互动。比如:
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
不过要小心,因为读取操作会被阻塞,也就是说如果“脚本 B”没有任何内容输出,读取操作就会一直停在那里,直到有内容输出为止。避免这种情况最简单的方法是使用线程。