Javascript 将数据帧从python发送到node.js应用程序
Im使用python shell在节点应用程序和python脚本之间进行通信 首先,我向python脚本发送一个变量。在此基础上,我创建了一个数据帧。 然后我想将生成的数据帧发送回node.js应用程序,并最终在页面上显示它。所以问题是,当它在控制台中打印整个数据帧时,它只呈现网页上的最后一行。 这里我包括代码 node.js代码:Javascript 将数据帧从python发送到node.js应用程序,javascript,python,node.js,child-process,Javascript,Python,Node.js,Child Process,Im使用python shell在节点应用程序和python脚本之间进行通信 首先,我向python脚本发送一个变量。在此基础上,我创建了一个数据帧。 然后我想将生成的数据帧发送回node.js应用程序,并最终在页面上显示它。所以问题是,当它在控制台中打印整个数据帧时,它只呈现网页上的最后一行。 这里我包括代码 node.js代码: var pyvar = data["Search"][0]["imdbID"] console.log(pyvar)
var pyvar = data["Search"][0]["imdbID"]
console.log(pyvar)
var pyshell = new PythonShell('script3.py');
pyshell.send(JSON.stringify(pyvar))
pyshell.on('message', function (message) {
jsondata = message
console.log(message);
});
pyshell.end(function (err) {
if (err){
throw err;
};
console.log('finished');
});
app.get("/data", function(req, res) {
res.render("data", {data: jsondata} )
})
EJS:
在控制台中,我得到:
onecolumn second third
0 pyvar 1 a
1 pyvar 2 b
2 pyvar 3 c
3 pyvar 4 d
4 pyvar 5 e
finished
但是,数据显示:
Table
4 pyvar 5 e
关于('message',函数(message){})pyshell.on的部分就是问题所在。每次它收到一条消息时,它都会用接收到的值替换jsondata。它很可能逐行从python程序接收数据
相反,您将希望连接从pyshell获得的任何内容
var jsonData = ""
pyshell.on("messsage", function(message){
jsonData += message;
});
pyshell.end(function(err){
console.log(jsonData);
});
不过,它的工作方式是连接一行代码,而不是数据帧形式(因此从python接收到的每个值都位于单独的一行)就像这样:
onecolumn second third 0 pyvar 1 a 1 pyvar 2 b 2 pyvar 3 c 3 pyvar 4 d 4 pyvar 5 e
但我仍然希望它以类似于控制台上的方式显示。我用另一种方式做了这件事——将数据帧转换为html文件,然后在节点中呈现。这不完全是我想要的,但现在似乎是最好的解决方案。
Table
4 pyvar 5 e
var jsonData = ""
pyshell.on("messsage", function(message){
jsonData += message;
});
pyshell.end(function(err){
console.log(jsonData);
});