我正在学习将电子js与python结合使用,并且正在使用python-shell,因此我具有以下简单的python脚本:
import sys, json
# simple JSON echo script
for line in sys.stdin:
print(json.dumps(json.loads(line)))
以及在我的main.js中:
let {PythonShell} = require('python-shell')
let pyshell = new PythonShell('/home/bassel/electron_app/pyapp/name.py', {mode : 'json'});
pyshell.send({name:"mark"})
pyshell.on('message', function (message) {
// received a message sent from the Python script (a simple "print" statement)
console.log("hi");
});
但是hi
没有打印出来,怎么了?
答案 0 :(得分:0)
通常会缓冲输出以保留系统资源。这意味着在这种情况下,系统会保留Python输出,直到可以一起释放为止。
要解决此问题,您可以显式“刷新”输出:
import sys, json
# simple JSON echo script
for line in sys.stdin:
print(json.dumps(json.loads(line)))
sys.stdout.flush() # <--- added line to flush output
如果您使用的是Python 3.3或更高版本,则可以选择使用:
import sys, json
# simple JSON echo script
for line in sys.stdin:
print(json.dumps(json.loads(line)), flush=True) # <--- added keyword