[英]Returning data from Python to node.js
我一直在关注一些我发现从Node调用Python脚本的例子。 我能够执行脚本,但我不能从Python返回数据。
test.js
var sys = require('sys'),
spawn = require('child_process').spawn,
dummy = spawn('python', ['test.py']);
dummy.stdout.on('data', function (data) {
sys.print("testing...\n");
sys.print(data);
});
test.py
import time
def dummy() :
out = '';
for i in range(0,10) :
out += str(i + 1) + "\n"
time.sleep(0.1)
print out
return out
if __name__ =='__main__' :
dummy = dummy()
有人可以提供一个如何将结果从test.py返回到test.js的示例吗?
谢谢。
注意:test.py已编辑为正确的缩进。
我想出了如何做到这一点,通过在Python中打印数据,并使用stdout.on()“监听”节点中的打印。
test.js
var sys = require('sys'),
spawn = require('child_process').spawn,
dummy = spawn('python', ['test.py']);
dummy.stdout.on('data', function(data) {
sys.print(data.toString());
});
test.py
import time
def dummy() :
out = '';
for i in range(0,10) :
out += str(i + 1) + ", "
time.sleep(0.1)
print out
if __name__ =='__main__' :
dummy = dummy()
我认为你的test.py有bug。 您应该再次检查缩进,然后在终端中运行python test.py
以查看它是否打印1到10:
import time
def dummy() :
out = '';
for i in range(0,10) :
out += str(i + 1) + "\n"
time.sleep(0.1)
print out
return out
if __name__ =='__main__' :
dummy = dummy()
您应该将stdout,stderr重定向到父进程,以帮助您快速识别错误:
var spawn = require('child_process').spawn,
var dummy = spawn('python', ['test.py']);
dummy.stdout.pipe(process.stdout);
dummy.stderr.pipe(process.stderr);
由于Sys已被弃用,我们可以使用util。 请使用util查找修改后的代码
test.js
var sys = require('util'),
spawn = require('child_process').spawn,
dummy = spawn('python', ['test.py']);
dummy.stdout.on('data', function(data) {
console.log(data.toString());
});
test.py
import time
def dummy() :
out = '';
for i in range(0,10) :
out += str(i + 1) + ", "
time.sleep(0.1)
print out
if __name__ =='__main__' :
dummy = dummy()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.