我想創建一個使用節點模塊PythonShell與Python進行通信的nw.js應用程序。節點中的PythonShell(nwjs)
我遇到的問題是除非我關閉標準輸入,否則什麼也不會寫入控制檯。不過,我想保持流打開,以便我可以發送多個命令到Python腳本,並讓Python保存它的狀態。
這裏是我的腳本:
script.py
import sys
def main():
command = sys.stdin.readlines() # unused for now
sys.stdout.write("HELLO WORLD")
sys.stdout.flush()
if __name__ == '__main__':
main()
main.js
var PythonShell = require('python-shell');
var pyshell = new PythonShell('script.py');
pyshell.on('message', function (message) {
console.log(message);
});
pyshell.send('hello');
在這一點上,沒有任何反應。
如果我是pyshell.end()
,那麼HELLO WORLD
被輸出到控制檯。但後來我無法再發出pyshell.send
命令。
如何讓Python子進程保持運行並等待輸入,然後將所有輸出重新傳回給JS?
我應該注意我也嘗試使用'child_process.spawn'模塊直接(而不是pythonshell)與相同的問題 – Jeff