我们可以在节点js中调用python脚本并运行节点js来调用吗?

时间:2016-10-12 13:20:40

标签: android python node.js



python.py

from pymongo import MongoClient
from flask import Flask

app = Flask(__name__)

host = "10.0.0.10"
port = 8085

@app.route('/name/<string:name>',methods=['GET','POST'])
def GetNoteText(name):
    
    print name
    
    return "Data Received"

@app.route('/', methods=['POST'])
def abc():
    print "Hii"
    return ('Welcome')

users=[]   
@app.route('/getNames')
def getName():
    client = MongoClient('mongodb://localhost:27017/')
    db = client.bridgeUserInformationTable
    cursor = db.bridgeUsersInfo.find()
    for document in cursor:
        #print "Name : ",document['name']
        users.append(document['name'])
        print document['name']
    #print (users)
    return "<html><body><h1>"+str(users)+"</h1></body></html>"
    
if __name__ == '__main__':
    app.run(
        host=host, port=port
        )
&#13;
&#13;
&#13;

&#13;
&#13;
node.j

var PythonShell = require('python-shell');
 
PythonShell.run('pass.py', function (err) {
  if (err) throw err;
  console.log('finished');
});
&#13;
&#13;
&#13;

我试过可以在运行节点js脚本从android设备获取输入后调用节点js中的python脚本吗?我有点困惑它应该如何解决?以及两种语言如何相互通信,如python到节点js?

2 个答案:

答案 0 :(得分:0)

ZERORPC是一个非常漂亮的基于ZeroMQ的库。这可能是从Node生成调用python代码的最简单方法。

对于一个非常简单的方法和非健壮的方法,您可以使用tmp文件从Node编写python命令。在Python内部运行事件循环,读取tmp文件以获取任何更改并在其中执行命令。

答案 1 :(得分:0)

是的,我们可以从node js调用python文件,您可以为此目的使用cmd-node包。

const cmd=require('node-cmd');
 
const processRef=cmd.run('python -i');
let data_line = '';
 
//listen to the python terminal output
processRef.stdout.on(
  'data',
  function(data) {
    data_line += data;
    if (data_line[data_line.length-1] == '\n') {
      console.log(data_line);
    }
  }
);
 
const pythonTerminalInput=`primes = [2, 3, 5, 7]
for prime in primes:
    print(prime)
 
`;
 
//show what we are doing
console.log(`>>>${pythonTerminalInput}`);
 
//send it to the open python terminal
processRef.stdin.write(pythonTerminalInput);