将数据框从python发送到node.js应用程序

我使用python-shell为了节点应用程序和python脚本之间的沟通首先我发送一个variables到python脚本。 基于它我创build一个数据框。 然后,我想将结果数据框发送回node.js应用程序,最后在页面上显示。 所以问题是,在控制台中它打印整个dataframe,它只呈现网页上的最后一行。 在这里我包括代码

node.js代码:

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:

 <h1> Table </h1> <%=data%> 

python script3.py

 import sys, json import pandas as pd def read_in(): lines = sys.stdin.readlines() return json.loads(lines[0]) def main(): lines = read_in() array1=[1,2,3,4,5] array2=["a","b","c","d","e"] df=pd.DataFrame({"onecolumn": lines, "second":array1, "third": array2 }) print (df) if __name__ == '__main__': main() 

在控制台中,我得到:

 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 

pyshell.on('message', function(message){})是这个问题的一部分。 每次得到消息时,它都会replace它所接收到的值来replacejsondata。 这很可能是从python程序逐行接收数据。

相反,你会想要连接任何你从pyshell获得的。

 var jsonData = "" pyshell.on("messsage", function(message){ jsonData += message; }); pyshell.end(function(err){ console.log(jsonData); });