Python和Node js通信

本教程之后,我一直试图在Node JS和Python之间进行通信: http : //www.sohamkamani.com/blog/2015/08/21/python-nodejs-comm/

python文件读取一个javascript数组,并使用numpy模块打印总和。 这里是python和节点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) 

Python脚本正在抛出一个错误。 python命令调用了python3而不是python 2.7,为此编写脚本并且脚本出错了。 抛出EPIPE错误,因为python脚本过早结束,节点尝试读/写到已经closures的pipe道。