用按键中断Python无限while循环
我正在写一个简单的脚本,目的是让我的电脑不进入睡眠状态(因为我没有管理员权限),这个脚本主要是通过一个无限循环来实现的,代码里有一句“while True”。
import time, win32api
cursorX = 0
cursorY = 0
while True:
cursorX, cursorY = win32api.GetCursorPos()
time.sleep(600)
cursorX = cursorX + 10
win32api.SetCursorPos((cursorX,cursorY))
cursorX, cursorY = win32api.GetCursorPos()
time.sleep(600)
cursorX = cursorX - 10
win32api.SetCursorPos((cursorX,cursorY))
现在,我可以通过按 Ctrl + C 来中断这个循环,但我想找个更干净的方法来结束它。有没有简单的方法可以设置一个条件,让它在我按下某个键时停止循环?我猜这可能和事件有关,但我对这方面了解不多。
2 个回答
3
我添加的最后三行代码可以让你在按下任何键的时候跳出这个循环。别忘了要导入msvcrt这个模块哦。
import time, win32api
import msvcrt
cursorX = 0
cursorY = 0
while True:
cursorX, cursorY = win32api.GetCursorPos()
time.sleep(600)
cursorX = cursorX + 10
win32api.SetCursorPos((cursorX,cursorY))
cursorX, cursorY = win32api.GetCursorPos()
time.sleep(600)
cursorX = cursorX - 10
win32api.SetCursorPos((cursorX,cursorY))
if msvcrt.kbhit():
if ord(msvcrt.getch()) != None:
break
4
为了更好地处理按下CTRL-C这个操作,我们可以用一种叫做try-except的方式来捕捉这个中断信号。这样做的好处是,当你按下CTRL-C时,可以优雅地处理这个情况,而不是让程序直接崩溃。下面是一个简单的代码示例:
try:
while True:
...
...
except KeyboardInterrupt:
exit