如何从 NodeJs 调用 python 脚本

2024-05-14

我需要在 NodeJs 中调用这个 python 脚本。

Read.py

#!/usr/bin/env python
# -*- coding: utf8 -*-

import RPi.GPIO as GPIO
import MFRC522
import signal

continue_reading = True

# Capture SIGINT for cleanup when the script is aborted
def end_read(signal,frame):
    global continue_reading
    print "Ctrl+C captured, ending read."
    continue_reading = False
    GPIO.cleanup()

# Hook the SIGINT
signal.signal(signal.SIGINT, end_read)

# Create an object of the class MFRC522
MIFAREReader = MFRC522.MFRC522()

# Welcome message
print "Welcome to the MFRC522 data read example"
print "Press Ctrl-C to stop."

# This loop keeps checking for chips. If one is near it will get the UID and authenticate
while continue_reading:

    # Scan for cards    
    (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)

    # If a card is found
    if status == MIFAREReader.MI_OK:
    # Get the UID of the card
    (status,uid) = MIFAREReader.MFRC522_Anticoll()

    # If we have the UID, continue
    if status == MIFAREReader.MI_OK:

        # Print UID
        print "Card read UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3])

        # This is the default key for authentication
        key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]

        # Select the scanned tag
        MIFAREReader.MFRC522_SelectTag(uid)

        # Authenticate
        status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid)

        # Check if authenticated
        if status == MIFAREReader.MI_OK:
            MIFAREReader.MFRC522_Read(8)
            MIFAREReader.MFRC522_StopCrypto1()
        else:
            print "Authentication error"

我使用了 python-shell,这是 NodeJs 代码

Test.js

var PythonShell = require('python-shell');

var options = {
scriptPath: '/home/pi/gpio-admin/MFRC522-python/'
};
var pyshell = new PythonShell('Read.py',options);


pyshell.on('message', function (message) {

    console.log(message);
});

但是当我运行这段代码时,我在 Node 端没有看到任何东西。我认为当 python 脚本达到这个级别时就会出现问题。

   (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)

因为我刚刚运行了 while 循环,它只有 print 语句,然后它就可以工作了。之后我尝试了另一种方法来实现这一目标。但我遇到了与上面相同的问题。这是另一种方法

AltTest.js

var python = require('child_process').spawn(
 'python',
 // second argument is array of parameters, e.g.:
 ["/home/pi/gpio-admin/MFRC522-python/Read.py"]
 );
 var output = "";
 python.stdout.on('data', function(){ 

    output += data ;
    console.log(data);
});
 python.on('close', function(code){ 

   console.log("Here you are there...");
 });

任何帮助,将不胜感激


有多种方法可以做到这一点。

  • 第一种方法是做npm install python-shell

这是代码

var PythonShell = require('python-shell');
//you can use error handling to see if there are any errors
PythonShell.run('my_script.py', options, function (err, results) { 
//your code

您可以使用以下命令向 python shell 发送消息pyshell.send('hello');

您可以在这里找到 API 参考 -https://github.com/extrabacon/python-shell https://github.com/extrabacon/python-shell

  • 第二种方式-您可以参考的另一个包是node python,您必须这样做npm install node-python

  • 第三种方式 - 您可以参考这个问题,您可以在其中找到使用子进程的示例 -如何从node.js调用外部脚本/程序 https://stackoverflow.com/questions/20972788/how-to-invoke-external-scripts-programs-from-node-js

还有一些参考资料 -https://www.npmjs.com/package/python https://www.npmjs.com/package/python

如果你想使用面向服务的架构 -http://ianhinsdale.com/code/2013/12/08/communicating- Between-nodejs-and-python/ http://ianhinsdale.com/code/2013/12/08/communicating-between-nodejs-and-python/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 NodeJs 调用 python 脚本 的相关文章

随机推荐

  • Xamarin - 在 xmlns clr 命名空间中找不到类型

    我正在制作一个 Xamarin Forms 应用程序 解决方案称为RESTTest 我的共享项目名为RestApp 在我的共享项目中 我有一个名为ViewModels 其中包含一个名为MainViewModel cs 我有一个名为MainP
  • iPhone SDK:将 UIActivityIndi​​catorView 添加到 UITableViewCell

    为什么单元格在这段代码中没有显示任何内容 UIActivityIndicatorView spinner UIActivityIndicatorView alloc initWithActivityIndicatorStyle UIActi
  • 使用DBFlow,如何加密已经存在的数据库?

    我正在使用 DBFlow 来处理项目中的数据库 并且我想对现有数据库进行加密 我知道我可能必须删除现有的未加密数据库并创建另一个加密数据库 我也知道我可以将 SQLCipher 与 DBFlow 一起使用 如上所述文档 https gith
  • 获取列名称以及 JSON 响应

    我有三个实体类 我编写了包含两个表的联接的查询 表 费用类别 Entity Table name ExpensesCategories public class ExpensesCategories Id GeneratedValue st
  • Dart2js 数字类型:确定值是 int 还是 double

    我正在尝试确定是否dynamic函数的参数实际上是一个int or a double我发现了令人惊讶的行为 至少对我来说 谁能解释一下这个输出 在 dartpad 上生成 foo value print value is int value
  • 如何更改 twitter-bootstrap 中文本区域的列数?

    如果我更改 rows 的值 它就会起作用 但无论我用 cols gt 设置什么值 它都会保持默认的 cols 列宽不会改变 我查看了 html 源代码 它反映了更改 我想知道 bootstrap 的 CSS 可能是嫌疑人 HTML 最终的
  • 如何在 Java 中获得列表的反向列表视图?

    我想在列表上有一个反向列表视图 与List sublist提供列表上的子列表视图 是否有一些函数可以提供此功能 我不想复制该列表 也不想修改该列表 在这种情况下 如果我能在列表上至少获得一个反向迭代器就足够了 另外 我知道如何自己实现这一点
  • 将 TFVC 代码从一个集合移动到另一个集合(包括历史记录)

    我需要将一些代码从一个项目集合中的 TFVC 移动到另一个集合中的项目 我还需要保留签入历史记录 我不担心更改集 ID 但确实希望保留历史记录中的评论 人物和时间以及所做的更改 被移动到的项目将是空的 这将在本地使用 TFS2017 Upd
  • pandas 使用日期时间对象重新索引 DataFrame

    是否可以重新索引 pandasDataFrame使用由日期时间对象组成的列 我有一个数据框df包含以下列 Int64Index 19610 entries 0 to 19609 Data columns cntr 19610 non nul
  • 使用 Javascript 解析文本

    我正在尝试使用 Javascript 来解析在文本框中输入的文本 这将结合各种用户生成的变量来创建随机活动 看看这个例子可能更有意义 一些示例输入可能是 Activity Home Out Home Read book for time C
  • 模拟器中 Google Wear 上的语音识别器没有语音输入

    我试图使用 Google Wear 网站上的自由形式语音输入 在 hello world 示例中 我刚刚添加了对 textView 的单击 它确实从语音意图中调出 立即发言 活动 但模拟器无法检测到我的麦克风发出的任何声音 我使用的是 Ma
  • 在python中断言两个变量几乎相等

    这里有两个变量 earnings forecast actual earning 数值变量 我想断言这两个变量是否相等 并且相对于 2 的差异是可以接受的actual earning多变的 认为 earnings forecast 6 ac
  • Openresty 中的并发模型是什么?

    我很难理解 openresty 或 nginx 的并发模型 我读了Lua变量作用域 http wiki nginx org HttpLuaModule Lua Variable Scope 它解释了变量的生命周期 但它没有说明对它们的并发访
  • Yii中的组件、扩展和模块有什么区别

    我是 Yii 框架的新手 刚刚遇到module 扩大 成分在受保护的文件夹内 任何人都可以从理论上和实践上区分所有这些 成分是可以帮助您根据模型编写业务逻辑的类 假设所有模型文件都使用相同的逻辑 这样逻辑就可以编写在组件内部 而不是为每个控
  • iCalendar 邀请未在电子邮件客户端中显示 RSVP 按钮

    我正在使用 PHPMailer 发送电子邮件 我的ICS内容是 BEGIN VCALENDAR METHOD REQUEST VERSION 2 0 PRODID FooBar FooBar Calendar EN BEGIN VEVENT
  • 使用 SceneKit 实现 ARKit 广告牌效果

    我希望添加与此应用程序类似的广告牌效果 https twitter com marpi status 897130955105644544 https twitter com marpi status 897130955105644544
  • java regex 屏蔽列表中的所有元素,最后 4 个字符可见

    我有一个字母数字字符串列表 如下所示 nG5wnyPVNxS6PbbDNNbRsK5zanG94Et6Q4y74 GgQoDWqP7KtxXeePyyebu5EnNp8XxPC1odeNv GgQoDWqP7KtxXeePyyebu5EnN
  • Play框架:单属性案例类的JSON读取

    我正在尝试为包含单个属性的案例类创建隐式 JSON Reads 但收到错误 Reads Nothing 不符合预期类型 这是代码 import play api libs functional syntax import play api
  • 接手一个项目 - 我应该问以前的程序员什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在接管一个商业网站的开发 该网站是由另一位程序员花费两年多的时间开发的 这主要是一项单人工作 维护和扩展网站 我将有 2 3 天的过渡期 届
  • 如何从 NodeJs 调用 python 脚本

    我需要在 NodeJs 中调用这个 python 脚本 Read py usr bin env python coding utf8 import RPi GPIO as GPIO import MFRC522 import signal