在nodejs中运行Python脚本

时间:2015-02-25 07:42:06

标签: javascript python node.js cross-platform

我正在尝试使用

运行带有node.js服务器的python脚本
  • npm python-shell package

一个简单的程序运行完美。但是当我尝试使用python中的某些函数时,它会抛出一个错误。例如。

我正在编写一个程序来获取用户的输入并回复相同的内容。

我在python中使用 raw_input ,但是在node.js中没有。

任何人都可以帮助我。

这是python代码:

while True :

question=raw_input('you :')
print cb1.ask(question)

Node.js代码:

var PythonShell = require('python-shell');
PythonShell.run('index.py', function (err, results) {
  if (err) throw err;
  console.log('result: %j', results);
});

1 个答案:

答案 0 :(得分:3)

PythonShell接受可以通过 options 参数传递给python脚本的参数,如example中所示。

var PythonShell = require('python-shell');

var options = {
  mode: 'text',
  pythonPath: 'path/to/python',
  pythonOptions: ['-u'],
  scriptPath: 'path/to/my/scripts',
  args: ['value1', 'value2', 'value3']
};

PythonShell.run('my_script.py', options, function (err, results) {
  if (err) throw err;
  // results is an array consisting of messages collected during execution
  console.log('results: %j', results);
});

同时在python脚本中,您可以访问传递的参数:

import sys 

arg1 = sys.argv[1] #value1
arg2 = sys.argv[2] #value2
arg3 = sys.argv[3] #value3

这是python脚本从命令行接受参数的方式。

至于你的问题,如果你接受来自node.js的输入,我认为你不需要在python中使用raw_input。也就是说,如果您只是将python用于后台进程。

我希望有所帮助。