问题描述
我制作了一个脚本,告诉我 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))