2
林首先我發送一個變量到Python腳本。基於它,我創建了一個數據框。 然後,我想將結果數據框發送回node.js應用程序,並最終將其顯示在頁面上。所以問題是,在控制檯中它會打印整個數據幀,它只會呈現網頁上的最後一行。 這裏我包括代碼從蟒發送數據幀,以便節點的應用程序和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:
<h1> Table </h1>
<%=data%>
蟒蛇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
它排序的工作在一個行代碼不是一個數據幀形式然而級聯結果(以便從蟒接收到的每個值是在一個單獨的線)在此: 'onecolumn第二第三0 pyvar 1 1個pyvar 2 b 2 pyvar 3 c 3 pyvar 4 d 4 pyvar 5 e' 但我仍然希望它以類似於控制檯上的方式顯示 –
嗯,我做了另一種方式 - 將數據框轉換爲html文件,然後在節點內呈現它。不完全是我想要的,但現在似乎是最好的解決方案。 –