我是Python脚本的新手,我正在编写一个脚本,当我的Raspberry Pi3达到特定温度时打开一个风扇。我一直试图整天调试我的代码,发现我无法弄清楚是什么问题。这是我的代码:
import os
import sys
import signal
import subprocess
import atexit
import time
from time import sleep
import RPi.GPIO as GPIO
pin = 18
maxTMP = 60
def setup():
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
GPIO.setwarnings(False)
return()
def setPin(mode):
GPIO.output(pin, mode)
return()
def exit_handler():
GPIO.cleanup()
def FanON():
SetPin(True)
return()
def FanOFF():
SetPin(False)
return()
try:
setup()
while True:
process = subprocess.Popen('/opt/vc/bin/vcgencmd measure_temp',stdout =
subprocess.PIPE,shell=True)
temp,err = process.communicate()
temp = str(temp).replace("temp=","")
temp = str(temp).replace("\'C\n","")
temp = float(temp)
if temp>maxTMP:
FanON()
else:
FanOFF()
sleep(5)
finally:
exit_handler()
这是我的错误:
文件“/home/pi/Scripts/run-fan.py”,第36行 而真: ^ IndentationError:意外缩进
我试图尽可能地缩进。我需要帮助。
谢谢!
答案 0 :(得分:0)
我想以此为前言,你应该使用四个空格来缩进。如果你这样做,那么就会更容易看到像你这里的问题。如果您使用像Spyder或PyCharm这样的IDE,则会有一些设置会自动突出显示缩进问题(无论您想要使用多少空格)。
也就是说,使用当前每个缩进一个空格的缩进方案,您希望用这个替换底部块:
try:
setup()
while True:
process = subprocess.Popen('/opt/vc/bin/vcgencmd measure_temp',stdout =
subprocess.PIPE,shell=True)
temp,err = process.communicate()
temp = str(temp).replace("temp=","")
temp = str(temp).replace("\'C\n","")
temp = float(temp)
if temp>maxTMP:
FanON()
else:
FanOFF()
sleep(5)
如果您在原始代码中使用了四个空格而不是一个空格,那么它将如下所示:
try:
setup()
while True:
process = subprocess.Popen('/opt/vc/bin/vcgencmd measure_temp',stdout =
subprocess.PIPE,shell=True)
temp,err = process.communicate()
temp = str(temp).replace("temp=","")
temp = str(temp).replace("\'C\n","")
temp = float(temp)
if temp>maxTMP:
FanON()
else:
FanOFF()
sleep(5)
这里还有另一个问题,那就是你的while True
块目前永远不会退出(也许你想在某处发表break
语句。)