在运行时在Nodejs应用程序中与Python脚本进行交互



你好,我在运行时试图与nodejs应用程序中的python脚本进行交互。

Python脚本更是用于执行WhatsApp操作的指挥中心,称为Yowsup。https://github.com/tgalal/yowsup/tree/master

我可以在外壳中运行" Yowsup CLI客户端"并与之合作。但是我想在nodejs应用程序中运行它,因为它是用python编写的,我在python中不好。

所以我所做的就是产生我通常在外壳中使用的命令:

var spawn = require('child_process').spawn,
    ls    = spawn('./yowsup/yowsup-cli', ['demos','--login', '49XXXXXXXXXXX:8bF0hUewVcX1hf6adpuasonFdEP=', '--yowsup', '-E', 's40']);
ls.stdout.on('data', function (data) {
    console.log('stdout: ' + data.toString());
});
ls.stderr.on('data', function (data) {
    console.log('stderr: ' + data.toString());
});
ls.on('exit', function (code) {
    console.log('child process exited with code ' + code.toString());
});

问题是,我没有从该过程中获取任何数据。Python脚本通常将某些输出打印为启动,但是在该过程运行时我无法在Node中获得任何内容。

我看着python脚本内部,看到输出是这样生成的:

print("%s send '%s'" % (messageProtocolEntity.getFrom(False), messageProtocolEntity.getBody()))

如何从运行时从Python脚本获取一些数据?

这与您的方法略有不同,并且使用了NPM lib,但确实有效(resultsrandom_geo.py脚本的Stdout(:

var py = require('python-shell');
var pyOptions = {
  mode: 'text',
  pythonPath: '/opt/local/bin/python',
  scriptPath: '.'
};
function getCoords(req, res, next) {
  py.run('random_geo.py', pyOptions, function(err, results) {
    if (err) {
      console.log(err);
    } else {
      console.log(results);
    }
  });
}

最新更新