我必须让两个程序(例如“脚本 A”(.py) 和“脚本 B”(.exe))进行通信。 两个程序都处于无限循环中:脚本 A 需要写入脚本 B 的标准输入,然后读取脚本 B 的标准输出,然后再次写入等等。脚本 B 我无法更改。
这两个文件都在我的硬盘上,所以我一定有比网络更好的方法来解决这个问题。但是,我可以使用脚本 A 编写文件。 这不是类(class)作业,我正在为游戏编写 GUI,并且我有一些预编程的 AI。 我想到了管道 (python scripta.py | scriptb.exe),但这似乎需要脚本 A 在脚本 B 执行之前完成。再一次,因为我从未使用过管道,所以我可能错过了一些明显的东西。
如果所需的工具是标准库的一部分,我更愿意,但如果不是,那就太糟糕了。
该解决方案必须同时适用于 Linux 和 Windows。 你们中有人能指出我正确的方向吗? 感谢您的宝贵时间。
请您参考如下方法:
如果您使用 subprocess 模块从“脚本 A”中启动“脚本 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
请小心,因为对 read 的调用会被阻塞,这意味着如果脚本没有任何要打印的内容,调用将挂起直到打印出来。避免这种情况的最简单方法是使用线程。
