2017-06-23 66 views
0

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

python脚本更多的是做一个称为yowsup的whatsapp操作的命令中心。 https://github.com/tgalal/yowsup/tree/master

我可以在shell中运行'Yowsup Cli客户端'并使用它。但我想在nodejs应用程序中运行它,因为它是用python编写的,而我在python中并不擅长。

所以我所做的就是产卵我通常在shell中使用这样的命令:

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脚本通常会打印一些输出作为开始,但在进程运行时,我无法在节点内获取任何内容。

我看了python脚本里面,看见输出这样产生的:

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

如何我可以从运行的Python脚本得到一些数据?

回答

0

这是不是你的方法略有不同,采用了NPM lib中,但没有工作(resultsrandom_geo.py脚本的标准输出):

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); 
    } 
    }); 
} 
+0

当我尝试这对yowsup-CLI脚本我得到的错误像这样:错误:进程退出代码1 在terminateIfNeeded – Kingalione

+0

其他人有你完全相同的问题 - https://github.com/extrabacon/python-shell/issues/46这是Python脚本中的错误。 – Chase

相关问题