单击停止按钮后 Python 中出现错误



请帮助我,我是Python的初学者。当我运行代码时一切都很好,但是单击停止按钮后出现错误。如何解决此问题?

法典:

import RPi.GPIO as GPIO
import dht11
import time
import datetime
# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
# read data using pin 17
instance = dht11.DHT11(pin=17)
while True:
result = instance.read()
if result.is_valid():
print("Last valid input: " + str(datetime.datetime.now()))
print("Temperature: %d C" % result.temperature)
print("Humidity: %d %%" % result.humidity)
time.sleep(2)

输出:

>>> %Run dht11_example.py
Last valid input : 2018-07-08 02:33:31. 993427
Temperature : 30 C
Humidity : 52%
Traceback (most recent call last):
File "path/file.py", line 21, in <module>
time.sleep(2)
KeyboardInterrupt: Execution Interrupted
>>>

错误:

Traceback (most recent call last):
File "path/file.py", line 21, in <module>
time.sleep(2)
KeyboardInterrupt: Execution Interrupted

你只是误解了KeyboardInterrupt的意思。引用相关的 Python 文档:

异常 键盘中断

当用户点击中断键(通常为Control-CDelete(时引发。在执行期间,会定期检查中断。异常继承自BaseException,以免被捕获Exception的代码意外捕获,从而阻止解释器退出。

在这种情况下,"中断键"只是 IDE 的停止按钮,而不是任何键盘快捷键。你没有犯任何错误。不过,我确实认为您的 IDE 不应该显示这一点,因为它并不是真正的错误,而且它使它看起来像一个错误。您可以安全地忽略此错误,或者遵循blhsing的建议并将代码包装在try/except KeyboardInterrupt中,使其看起来更漂亮。坦率地说,我不会,但这最终是一个意见问题。

当您使用 ctrl-C手动中止脚本的执行时,会引发KeyboardInterrupt异常,因此它实际上并不是一个错误,但是您可以通过捕获try块中的异常,使其在按下 ctrl-C 时优雅退出。

import RPi.GPIO as GPIO
import dht11
import time
import datetime
# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
# read data using pin 17
instance = dht11.DHT11(pin=17)
try:
while True:
result = instance.read()
if result.is_valid():
print("Last valid input: " + str(datetime.datetime.now()))
print("Temperature: %d C" % result.temperature)
print("Humidity: %d %%" % result.humidity)
time.sleep(2)
except KeyboardInterrupt:
print('Done.')

最新更新