如何捕获 subprocess.call 的输出

How to capture output of subprocess.call(如何捕获 subprocess.call 的输出)
本文介绍了如何捕获 subprocess.call 的输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

限时送ChatGPT账号..

我制作了一个脚本,告诉我 Raspberry Pi 3 的温度,但脚本有问题.结果输出是机器人说您的 RPI3 温度当前为 0".我的代码有什么问题?

I have made a script that tells me the temperature of my Raspberry Pi 3, but there is a problem with the script. The result output is the bot saying "Your RPI3 temp is currently 0". What is wrong with my code?

@bot.command(pass_context=True)
async def vcgencmdmeasure_temp(ctx):
    if ctx.message.author.id == "412372079242117123":
        await bot.say("OK....")
        return_code = subprocess.call("vcgencmd measure_temp", shell=True)
        await bot.say("KK done")
        await bot.say("Your RPI3 temp is currently: {}".format(return_code))
    else:
        await bot.say("Error user lacks perms(only bot owner can run this)")

我知道想要运行任何命令.当前脚本

i know want to run any command. Current script

@bot.command(pass_context=True)async def rpicmd(ctx, *args):

@bot.command(pass_context=True) async def rpicmd(ctx, *args):

if ctx.message.author.id == "412372079242117123":
    mesg = ''.join(args)
    mesg = str(mesg)
    command_output = subprocess.check_output(mesg, shell=True, universal_newlines=True)
    await bot.say(command_output)
else:
    await bot.say("No noob")

我得到了错误:

raise CommandInvokeError(e) from e
discord.ext.commands.errors.CommandInvokeError: Command raised an 
 exception: CalledProcessError: Command 'vcgencmdmeasure_temp' returned 
  non-zero exit status 12

推荐答案

return_code 会有进程的返回码.当一个进程成功存在(没有错误)时,它返回一个代码0.如果出错,则返回 1 代码(或非零值).如果你想要程序的输出(它打印到 stdout),这是获得它的一种方法:

return_code will have the return code of the process. When a process exists successfully (without error), it returns a code of 0. If it errors, it returns a code of 1 (or something non-zero). If you want the output of the program (that it prints to stdout), this is one way to get it:

p = subprocess.run("vcgencmd measure_temp", shell=True,stdout=subprocess.PIPE)
result = p.stdout.decode()
await bot.say("Your RPI3 temp is currently: {}".format(result))

这篇关于如何捕获 subprocess.call 的输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How do I make a list of all members in a discord server using discord.py?(如何使用 discord.py 列出不和谐服务器中的所有成员?)
how to change discord.py bot activity(如何更改 discord.py 机器人活动)
Issues with getting VoiceChannel.members and Guild.members to return a full list(让 VoiceChannel.members 和 Guild.members 返回完整列表的问题)
Add button components to a message (discord.py)(将按钮组件添加到消息(discord.py))
on_message() and @bot.command issue(on_message() 和@bot.command 问题)
How to edit a message in discord.py(如何在 discord.py 中编辑消息)