向 Python 脚本发送消息

2023-11-25

我正在尝试编写一个小 python 程序来关闭或重新启动我的 Raspberry PI,由连接到 GPIO 的按钮驱动。该程序可以通过两个 LED 显示树莓派的当前状态(启动、运行、停止、重启)。 python 程序作为守护进程执行,由 init.d bash 脚本(使用 /etc/init.d/sculpture 编写)启动。

现在我可以启动/停止/验证守护进程的状态,并且守护进程可以检查连接按钮的输入,以执行命令“shutdown -h now”或“shutdown -r now”。

为了显示树莓派的当前状态,我曾想过使用运行级别目录中的一些脚本向守护进程发送消息,以更改 LED 的状态。 但我不知道如何在python程序中接收消息。

有人可以帮助我吗?

Thanks.


有多种方法可以将消息从一个脚本/应用程序发送到另一个脚本/应用程序:

对于您的应用程序来说,有效的方法是使用命名管道。使用创建它os.mkfifo,在 python 应用程序中以只读方式打开它,然后等待其上的消息。

如果您希望应用程序在等待时执行其他操作,我建议您以非阻塞模式打开管道以查找数据可用性,而不会阻塞脚本,如下例所示:

import os, time

pipe_path = "/tmp/mypipe"
if not os.path.exists(pipe_path):
    os.mkfifo(pipe_path)
# Open the fifo. We need to open in non-blocking mode or it will stalls until
# someone opens it for writting
pipe_fd = os.open(pipe_path, os.O_RDONLY | os.O_NONBLOCK)
with os.fdopen(pipe_fd) as pipe:
    while True:
        message = pipe.read()
        if message:
            print("Received: '%s'" % message)
        print("Doing other stuff")
        time.sleep(0.5)

然后您可以使用以下命令从 bash 脚本发送消息

echo "your message" > /tmp/mypipe

EDIT:我无法让 select.select 正常工作(我只在 C 程序中使用它),所以我将建议更改为非阻塞模式。

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

向 Python 脚本发送消息 的相关文章

  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 分叉/多线程进程|重击

    我想让我的代码的一部分更加高效 我正在考虑让它分叉成多个进程 并让它们一次执行 50 100 次 而不是只执行一次 例如 伪 for line in file do foo foo2 foo3 done 我希望这个 for 循环运行多次 我
  • 以同步方式使用 FastAPI,如何获取 POST 请求的原始正文?

    在中使用 FastAPIsync not async模式 我希望能够接收 POST 请求的原始 未更改的正文 我能找到的所有例子都显示async代码 当我以正常同步方式尝试时 request body 显示为协程对象 当我通过发布一些内容来
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • 为什么 $((true == false)) 在 bash 中计算结果为 1?

    为什么 bash 有以下行为 echo true false 1 我本以为这会打印0 但它打印1 以下事实使情况变得更加复杂 gt echo true 0 gt echo false 0 gt echo true true 1 gt ech
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 迭代 pandas 数据框的最快方法?

    如何运行数据框并仅返回满足特定条件的行 必须在之前的行和列上测试此条件 例如 1 2 3 4 1 1 1999 4 2 4 5 1 2 1999 5 2 3 3 1 3 1999 5 2 3 8 1 4 1999 6 4 2 6 1 5 1

随机推荐

  • PHP 中的推送通知

    在尝试执行 php 脚本以向我的 iphone 发送推送通知后 我收到此错误 我已经尝试了一切 但没有任何效果 我相信这意味着我的ck pem是错误的 但我不确定是 key pem 还是 cert pem 错误 请帮忙 Script Thi
  • stl分配器、其他类型的复制构造函数、重新绑定

    STL 分配器需要以下构造函数形式 20 1 5 X a b 的要求是Y a b 在标准实现中 这意味着并且实现为 template
  • 遮蔽 Maven 中的依赖关系

    我有两个通过 Maven 导入的依赖项 它们都导入一个公共库 但版本不同 但版本彼此不兼容 本质上是描述的问题在这篇文章中 但不幸的是 对我来说 解决方案并不像博客文章描述的那么简单 因为没有通用版本的包Z这适用于两个依赖项 跳过导致这一点
  • Android 中如何统计通知数量并显示单个图标?

    我有多个 Android 通知 但是当我从网络服务器发送消息时 Android 设备会在状态栏上创建一个新的通知图标 我想统计未读通知的数量 显示在statusbar具有单个图标 并且当阅读通知时 该通知必须更改未读通知计数的数量 我该怎么
  • 信号量和并发编程

    对于家庭作业 我需要编写以下场景 这将通过使用 BACI 的信号量来完成 即 C 有 2 个男女通用卫生间 每个可容纳 4 人 由于它是男女皆宜的 所以只有同性别的人可以同时进入卫生间 先进先出并不重要 我脑子里有一个基本的 算法 可以处理
  • 数据库的 ID 最佳实践 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我想知道构建和存储 ID 的最佳实践是什么 几年前 一位教授以社会安全号码为例 向我讲述了构造不良的身份识别系统的危险 特别是 由于 SSN 没有任何错误检测功能 无法区分 9 位数字符串
  • 如何使用 xcode5 在 mac 应用程序中对捆绑的可执行文件进行代码签名

    我有一个在 xCode 5 中创建的应用程序 其中包含捆绑的可执行文件 我正在尝试将应用程序提交到 Mac 应用程序商店 但是当我提交它时 它失败并显示以下消息 未启用应用程序沙箱 以下可执行文件必须包含 com apple securit
  • 使用回发数据抓取页面 javascript Python Scrapy

    我正在通过 Scrapy 使用 ASP NET 编程爬行一些目录 要爬行的页面编码如下 javascript doPostBack ctl00 MainContent List Page X 其中 X 是 1 到 180 之间的整数 Mai
  • 如何更改 IE 中输入字段中文本光标的颜色?

    据我所知 在 Firefox 和 Chrome 中 输入字段中文本光标的颜色会更改为colorCSS 属性 但在 IE 中却没有任何效果 有没有办法在IE中实现这种效果呢 IE 输入中文本光标的颜色始终与背景颜色相反 所以你不能在IE上 这
  • 具有相互关联的三个表的多对多 (SqlAlchemy)

    我有三个表 用户 设备和角色 我已经创建了一个像这样的用户和设备之间的多对多关系 Many to Many relation between User and Devices userDevices db Table user device
  • 返回由 USING 创建的对象

    我正在使用中创建一个对象 下面的 obj 并将该对象作为函数返回的一部分返回 这会导致任何问题 例如在我尝试在另一个函数中使用返回值之前对象将被处理吗 using MyObject obj new MyObject return obj 这
  • 在 MVVM 世界中更改 CollectionViewSource 源

    Edited 我创建了一个新的 VS2010 WPF 应用程序 仅包含 3 个文件 MainWindow xaml MainWindow xaml cs 和 MainWindowViewModel cs 下面列出 如果有人觉得真的很有帮助
  • 错误:致命:不是 git 存储库(或任何父目录):.git

    当我尝试将图像放入项目的 Resources 文件夹中时 我收到以下消息 致命 不是 git 存储库 或任何父目录 git 我该如何修复它 有同样的问题 我复制了一个项目然后尝试删除文件 如果您希望能够编辑项目 请输入 git initfo
  • 在调用 Objective-C 对象的实例方法时,是否可以释放该对象?

    请考虑以下情况 Objective C 类的实例由一个强引用和一个弱引用 在 ARC 下 引用 在线程 X 上 通过弱引用在实例上调用方法 在线程 Y 上 强引用被破坏 因此不再有对该实例的强引用 并且应该释放该实例 这种情况是否可能 因为
  • Inno Setup:如何查看 Inno Setup 预处理器的输出(翻译)?

    我有一个带有预处理器指令的 Inno Setup 脚本 defines ifs etc 我想在我的脚本上运行 Inno Setup 预处理器并查看预处理器的输出 Inno Setup speak 中的翻译 也就是说 我想查看预处理器的结果
  • Spring Security OAuth2 - @EnableOauth2Sso 但也接受令牌作为身份验证

    我有一个应用程序 EnableOAuth2Sso on the WebSecurityConfigurerAdapter 添加后 EnableOAuth2Sso该应用程序将我重定向到授权服务器 并允许在该授权服务器登录后进行访问 我也想提供
  • 在Python中获取括号内的字符串

    我有一个示例字符串
  • 我应该测试私有方法还是只测试公共方法? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我读过了这个帖子关于如何测试私有方法 我通常不测试它们 因为我一直认为仅测试从对象外部调用的公共方法会更快 你测试私有方法吗 我应该总是测试它们吗 我不对私有方法进行单元测试 私有方法是应
  • 在 Tomcat 中重新部署应用程序时出现内存泄漏

    当我在 tomcat 中重新部署应用程序时 出现以下问题 The web application created a ThreadLocal with key of type java lang ThreadLocal value java
  • 向 Python 脚本发送消息

    我正在尝试编写一个小 python 程序来关闭或重新启动我的 Raspberry PI 由连接到 GPIO 的按钮驱动 该程序可以通过两个 LED 显示树莓派的当前状态 启动 运行 停止 重启 python 程序作为守护进程执行 由 ini