Node.js + Python子进程:Print返回数据,但return不返回't
Node.js + Python Child Process: Print returns data, but return doesn't
我有一个基本问题。我正在写node.js +套接字开头的代码。我使用python子进程并在它返回数据时触发操作,即:
io.sockets.on('connection',function(socket) {
socket.on('load_api_call', function() {
var pythonarray=['/Users/<omitting path>/test_return_sub_dict.py']
var child=spawn('/Users/<omitting path>/python2.7',pythonarray)
child.stdout.on('data',function(data){
socket.emit('jsonSuccess',data.toString('utf8'));
console.log('python output: '+data);
});
child.stderr.on('data',function(data){
process.stdout.write('error output: '+data);
});
});
});
这很好。我的问题是:当我在python子进程中打印返回的数据时,上面的"child.stdout"。On ('data')将被返回的数据激活。然而,当我只是"返回"数据时,没有返回数据,或者无论如何都没有以套接字可以听到的方式返回。例如在子进程模块"return sub dictionary"中,最后一行
return sub_dict
将不会返回套接字将注意到的任何内容。但是最后一行:
print sub_dict
将被套接字注意到并触发后续所需的操作。
从python子进程返回数据的正确方法是什么?
我可以看到我不理解Python, Node,或者两者的一些基本机制,但我不知道如何称呼它来谷歌答案。
谢谢你的建议!
python脚本必须输出到stdout或stderr以供节点拾取数据,因为这些是子进程对象正在监视的流。我想仅仅返回一个值不会自动显示该数据,所以你必须告诉python手动打印到标准输出或标准错误。
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- jquery if语句返回return wong语句
- 函数在return语句之前返回空对象
- JS-fn()中返回后方括号的含义{return{}[]}
- (new Array(10)).map(function() { return 1;}) 返回 [, , , , , .
- 将 React 的方法 'return' 作为字符串返回
- 在 JavaScript 中返回一个 return
- 为什么我的子函数需要“return”语句以避免出错?父函数没有“返回”,也没有错误
- return语句在完成任务之前返回
- 返回大括号在javascript中意味着什么(例如return{init:init})
- 当您从函数返回JavaScript语句时会发生什么,例如return console.log(“Hello”)
- Eval在执行带有return语句的函数时总是返回错误
- 为什么构造函数(带“return this”)返回窗口对象?
- JS.对象函数Return中的返回函数
- 在mvc中使用Action Result作为返回类型时,return文件不存在
- Node.js + Python子进程:Print返回数据,但return不返回't
- 为什么返回的值应该与JavaScript中的return语句在同一行
- 返回false,与Return相同