Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据帧从python发送到node.js应用程序_Javascript_Python_Node.js_Child Process - Fatal编程技术网

Javascript 将数据帧从python发送到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)

Im使用python shell在节点应用程序和python脚本之间进行通信 首先,我向python脚本发送一个变量。在此基础上,我创建了一个数据帧。 然后我想将生成的数据帧发送回node.js应用程序,并最终在页面上显示它。所以问题是,当它在控制台中打印整个数据帧时,它只呈现网页上的最后一行。 这里我包括代码

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:

在控制台中,我得到:

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);
});