Python 缩进错误:意外缩进…令人沮丧

Python 缩进错误:意外缩进…令人沮丧,python,Python,我对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()

我对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行 尽管如此: ^ 缩进错误:意外缩进

我已经尽可能地缩进了。我需要帮助


谢谢

我想先说一句,缩进应该用四个空格。如果你这样做了,你会更容易看到像你在这里遇到的问题。如果您使用像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
语句)。

我认为
setup()
while True
没有对齐。也许它应该从同一点开始。在
中尝试一个空格,而在
中为True
以查看错误是否更改或是否有效。如果使用较大的缩进(通常为4)。这将使您更容易发现缩进的位置。您是否阅读了错误消息?它说第36行缩进太多了。
setup()
之后的所有内容都缩进了一级。而且
return
不是函数调用。不要在后面加括号。(将
return()
替换为
return
)。