为什么 "except" 的这种用法是 Python 3 中的语法错误?
Why is this usage of "except" a syntax error in Python 3?
我正在尝试编写一个简单的程序,它会根据一天中的时间打开和关闭灯,在 Python 3.
尝试在 while
循环中使用 except KeyboardInterrupt:
时,我不断收到语法错误。这是错误:
except KeyboardInterrupt:
^
SyntaxError: invalid syntax
因为我已经用在线文档仔细检查了语法,所以我不知道自己做错了什么,我想我在这里缺少一些理解。
完整代码供参考:
#!/usr/bin/python
import time
import datetime
TimeStart = datetime.time(17, 0, 0)
TimeEnd = datetime.time(18, 30, 0)
def onoff():
while True:
if TimeEnd > datetime.datetime.now().time() and TimeStart < datetime.datetime.now().time():
print("Pin 18 High")
else:
print("Pin 18 Low")
except KeyboardInterrupt:
pass
print("Error..... Quiting.....")
raise
sys.exit()
time.sleep(30)
onoff()
您不能在 try: ... except: ...
代码块之外使用 except
语句。
https://docs.python.org/3/tutorial/errors.html#handling-exceptions
因此您可以将代码改写为
while True:
try:
if TimeEnd > datetime.datetime.now().time() and TimeStart < datetime.datetime.now().time() :
print ("Pin 18 High")
else:
print ("Pin 18 Low")
except KeyboardInterrupt:
pass
print("Error..... Quiting.....")
raise
sys.exit()
我没试过但本质上是
- 用
try
子句包装 if 语句,并且
- 任何
KeyboardInterrupt
都将被 except
语句捕获。
我正在尝试编写一个简单的程序,它会根据一天中的时间打开和关闭灯,在 Python 3.
尝试在 while
循环中使用 except KeyboardInterrupt:
时,我不断收到语法错误。这是错误:
except KeyboardInterrupt:
^
SyntaxError: invalid syntax
因为我已经用在线文档仔细检查了语法,所以我不知道自己做错了什么,我想我在这里缺少一些理解。
完整代码供参考:
#!/usr/bin/python
import time
import datetime
TimeStart = datetime.time(17, 0, 0)
TimeEnd = datetime.time(18, 30, 0)
def onoff():
while True:
if TimeEnd > datetime.datetime.now().time() and TimeStart < datetime.datetime.now().time():
print("Pin 18 High")
else:
print("Pin 18 Low")
except KeyboardInterrupt:
pass
print("Error..... Quiting.....")
raise
sys.exit()
time.sleep(30)
onoff()
您不能在 try: ... except: ...
代码块之外使用 except
语句。
https://docs.python.org/3/tutorial/errors.html#handling-exceptions
因此您可以将代码改写为
while True:
try:
if TimeEnd > datetime.datetime.now().time() and TimeStart < datetime.datetime.now().time() :
print ("Pin 18 High")
else:
print ("Pin 18 Low")
except KeyboardInterrupt:
pass
print("Error..... Quiting.....")
raise
sys.exit()
我没试过但本质上是
- 用
try
子句包装 if 语句,并且 - 任何
KeyboardInterrupt
都将被except
语句捕获。