Python,捕获操作系统输出并作为不和谐的消息发送

Posted

技术标签:

【中文标题】Python,捕获操作系统输出并作为不和谐的消息发送【英文标题】:Python, capture OS output and send as a message in discord 【发布时间】:2016-07-30 21:43:33 【问题描述】:

对于一个正在制作的机器人,我希望能够查看运行它的 pi 的温度(当然该命令只能由开发人员使用)。我的问题是我无法缝合以获取终端命令的输出。我知道命令一半有效,因为我可以在 pi 的屏幕上看到正确的输出,但机器人只在聊天中发布“0”。

我尝试过的事情:

async def cmd_temp(self, channel):
    proc = subprocess.Popen('/opt/vc/bin/vcgencmd measure_temp',
                            stdout=subprocess.PIPE)
    temperature = proc.stdout.read()
    await self.safe_send_message(channel, temperature)


async def cmd_temp(self, channel):
    await self.safe_send_message(channel,
        (os.system("/opt/vc/bin/vcgencmd measure_temp")))


async def cmd_temp(self, channel):
    temperature = os.system("/opt/vc/bin/vcgencmd measure_temp")
    await self.safe_send_message(channel, temperature)

每个都做同样的事情,在聊天中发布一个 0,并在 pi 的屏幕上输出。如果有人可以提供帮助,我将不胜感激

【问题讨论】:

【参考方案1】:

asyncio.subprocess 模块允许您以异步方式处理子流程:

async def cmd_temp(self, channel):
    process = await asyncio.create_subprocess_exec(
        '/opt/vc/bin/vcgencmd', 
        'measure_temp', 
        stdout=subprocess.PIPE)
    stdout, stderr = await process.communicate()
    temperature = stdout.decode().strip()
    await self.safe_send_message(channel, temperature)

在asyncio user documentation 中查看更多示例。

【讨论】:

以上是关于Python,捕获操作系统输出并作为不和谐的消息发送的主要内容,如果未能解决你的问题,请参考以下文章

如何使不和谐机器人自动发送消息?

Python异常捕获和处理,代码异常报错也能那么和谐且个性

不和谐机器人可以返回并对所有旧消息做出反应吗

我如何阅读不和谐消息并将其用作变量? Python

Python:不和谐 API

如何知道 twitch 流媒体是不是直播并发送相关消息?不和谐.py