使两个脚本进行通信

Oxy*_*nic 1 python communication

我必须制作两个程序(例如"脚本A"(.py)和"脚本B"(.exe))进行通信.两个程序都处于无限循环:脚本A需要写入脚本B的stdin,然后读取脚本B的标准输出,然后再次写入等.脚本BI不能更改.

这两个文件都在我的硬盘上,所以我必须有一个比网络更好的解决方法.但是,我可以使用脚本A编写文件.这不是课程作业,我正在为游戏编写GUI,我有一些AI的预编程.我曾想过管道(python scripta.py | scriptb.exe),但似乎需要脚本A才能在脚本B执行之前完成.然后,因为我从未使用过滚边,我可能错过了一些明显的东西.

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

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

Zac*_*oom 6

如果使用子进程模块从"脚本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
Run Code Online (Sandbox Code Playgroud)

请注意,因为对read的调用会阻塞,这意味着如果脚本没有要打印的内容,则调用将一直挂起,直到调用为止.避免这种情况的最简单方法是使用线程.