1
我一直在試圖以下這個教程節點JS和Python之間進行通信:http://www.sohamkamani.com/blog/2015/08/21/python-nodejs-comm/Python和節點JS通信
蛇皮文件讀取一個javascript陣列和打印使用numpy的模塊的總和。這裏是python和node js文件的代碼。
Python代碼:
import sys, json, numpy as np
#Read data from stdin
def read_in():
lines = sys.stdin.readlines()
return json.loads(lines[0])
def main():
#get our data as an array from read_in()
lines = read_in()
#create a numpy array
np_lines = np.array(lines)
#use numpys sum method to find sum of all elements in the array
lines_sum = np.sum(np_lines)
#return the sum to the output stream
print lines_sum
#start process
if __name__ == '__main__':
main()
節點js代碼:
var spawn = require('child_process').spawn,
py =spawn('python', ['compute_input.py']),
data = [1,2,3,4,5,6],
dataString='';
py.stdout.on('data', function(data) {
dataString += data.toString();
});
py.stdout.on('end', function() {
console.log('Sum = ', dataString);
});
py.stdin.write(JSON.stringify(data));
py.stdin.end();
錯誤消息:
Error: write EPIPE
at exports._errnoException (util.js:1018:11)
at Socket._writeGeneric (net.js:711:26)
at Socket._write (net.js:730:8)
at doWrite (_stream_writable.js:331:12)
at writeOrBuffer (_stream_writable.js:317:5)
at Socket.Writable.write (_stream_writable.js:243:11)
at Socket.write (net.js:657:40)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
(1)這是無效的Python代碼。 (2)你如何運行腳本? – kazemakase
(1)你能澄清什麼是無效的? (2)我正在使用節點js命令提示符運行腳本。 – Akshay
像'** def read_in():**'這樣的函數定義不應該包含這些星星。如果你單獨運行Python腳本,解釋器會告訴你。我猜節點吞下了子進程的錯誤信息。 – kazemakase