Python和Node js通信

时间:2017-08-10 14:55:51

标签: javascript python node.js numpy

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

python文件读取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 个答案:

答案 0 :(得分:1)

Python脚本抛出错误。 python命令调用了python3而不是python 2.7,编写了脚本并且脚本出错了。抛出EPIPE错误,因为python脚本提前结束,节点尝试读取/写入已经关闭的管道。