我想创造一个西北js使用节点模块pythonsell与Python通信的应用程序。在
我遇到的问题是,除非我关闭stdin,否则不会向控制台写入任何内容。不过,我希望保持流的打开状态,以便可以向Python脚本发送多个命令,并让Python保存其状态。在
以下是我的脚本:
在脚本.py在
import sys
def main():
command = sys.stdin.readlines() # unused for now
sys.stdout.write("HELLO WORLD")
sys.stdout.flush()
if __name__ == '__main__':
main()
在主.js在
^{pr2}$在这一点上,什么都没有发生。在
如果我执行pyshell.end()
,那么{pyshell.send
命令。在
如何让Python子进程保持运行并等待输入,同时将所有输出管道返回JS?在
几个问题:
使用
sys.stdin.readline()
代替sys.stdin.readlines()
。否则,Python将继续等待您完成输入流。您应该能够发送一个^D
信号来终止输入的结尾,但这对我不起作用。要使流保持打开状态,请将命令行输入包装在一个循环中(请参见下面的Python代码)
同样重要的是:
{cd4>不会自动追加。无论出于什么原因,输出都需要}才能工作;其中一个不能切断输出。
\n
和{pythonshell似乎缓存了Python代码。因此,如果对Python文件进行任何更改,必须重新启动nwjs应用程序才能使其生效。
下面是工作的完整示例代码:
在脚本.py在
在主.js在
^{pr2}$现在使用}并在JS控制台中立即接收响应!在
pyshell.send("hello")
、pyshell.send("goodbye")
、或{相关问题 更多 >
编程相关推荐