使用python shell和node.js进行双向通信
bidirectional communication with python-shell and node.js
我正在尝试在node.js和python shell之间进行通信。我能够从python shell对象接收数据,但当我试图向python shell发送消息时,它会崩溃。
我的app.js:
var PythonShell = require('python-shell');
var options = {
scriptPath: '/home/pi/python'
};
var pyshell = new PythonShell('test.py', options, {
mode: 'text'
});
pyshell.stdout.on('data', function(data) {
pyshell.send('go');
console.log(data);
});
pyshell.stdout.on('data2', function(data) {
pyshell.send('OK');
console.log(data);
});
pyshell.end(function(err) {
if (err) throw err;
console.log('End Script');
});
和我的测试.py:
import sys
print "data"
for line in sys.stdin:
print "data2"
我基本上想以时间的方式进行交流:
- 从python接收"数据">
- 将"go"发送到python
- 从python接收"data2">
另一个问题:在的教程中https://github.com/extrabacon/python-shell有人写,你必须写pyshell.on((来等待数据,而在源代码中,作者写的是pyshell.stdout.on(。为什么?
谢谢!!!(纠正了python中的错误缩进(
您的代码显示出对python-shell
的一些错误使用。下面我整理了一些笔记。然而,这正是我主要发现的错误,因此它只会纠正python-shell
库的使用,但可能不一定会消除Python对应程序的所有问题。
错误使用stdout.on('data'(
您似乎未正确使用事件处理程序stdout.on
。处理程序将";数据";as参数表示从Python脚本打印输出消息时发生的事件。无论打印的消息是什么,这始终是stdout.on('data')
。
这个无效:
pyshell.stdout.on('data2', function(data) { .... })
它应该始终是
pyshell.stdout.on('data', function(data) { .... })
将消息中继到Python时,应将命令与end
一起包含
您应该从以下位置更改:
pyshell.send('OK');
对此:
pyshell.send('OK').end(function(err){
if (err) handleError(err);
else doWhatever();
})
因此,纠正这两个错误,您的代码应该变成:
pyshell.stdout.on('data', function(data) {
if (data == 'data')
pyshell.send('go').end(fucntion(err){
if (err) console.error(err);
// ...
});
else if (data == 'data2')
pyshell.send('OK').end(function(err){
if (err) console.error(err);
// ...
});
console.log(data);
});
相关文章:
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- Ember.js:接受的子组件和父组件之间通信的最佳实践
- 如何在Famo.us中的两个视图(不同的js文件)之间进行通信
- 如何在 PHP 和 JS 中的并发会话之间进行通信
- 在 Node.js 中使用流来缓冲 HTTP 通信
- 从边缘.js与 C# 主机通信
- 如何使用js在两个aspx页面之间进行通信
- 使用HTML和Javascript进行双向通信
- IPython内核javascript双向通信的极简主义示例
- 指令和控制器之间的双向通信
- HTTP get 请求通信 js 到 PHP 不会返回结果
- 将python连接到javascript进行双向通信
- 如何在服务之间进行双向通信
- 框架之间的双向通信
- AngularJS:通过服务在两个作用域/控制器之间进行双向通信
- 龙卷风双向通信没有websockets
- Meteor和Node之间的双向通信
- 使用python shell和node.js进行双向通信
- 与Node.js的双向通信
- 如何在RaspberryPi和远程托管的Webapp之间建立双向通信