[英]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.