我有一个 python 应用程序,其中一个函数在递归循环中运行,并在循环的每个循环中将更新的信息打印到终端,一切都很好,直到我尝试停止这种递归。
它不会停止,直到终端窗口关闭或应用程序被终止(按下 control-c)但是我对该方法不满意。
我有一个函数可以停止循环并退出程序,它永远没有机会在循环中被调用,所以我希望将它分配给一个键,以便在按下它时调用它。
将一项功能分配给一个或多个键的最简单方法是什么?
我有一个 python 应用程序,其中一个函数在递归循环中运行,并在循环的每个循环中将更新的信息打印到终端,一切都很好,直到我尝试停止这种递归。
它不会停止,直到终端窗口关闭或应用程序被终止(按下 control-c)但是我对该方法不满意。
我有一个函数可以停止循环并退出程序,它永远没有机会在循环中被调用,所以我希望将它分配给一个键,以便在按下它时调用它。
将一项功能分配给一个或多个键的最简单方法是什么?
您可以在那时拦截ctrl+c
信号并调用自己的函数而不是退出。
import signal
import sys
def exit_func(signal, frame):
'''Exit function to be called when the user presses ctrl+c.
Replace this with whatever you want to do to break out of the loop.
'''
print("Exiting")
sys.exit(0) # remove this if you do not want to exit here
# register your exit function to handle the ctrl+c signal
signal.signal(signal.SIGINT, exit_func)
#loop forever
while True:
...
你应该sys.exit(0)
用对你更有用的东西来代替。except
您可以在循环体(或只是)之外引发异常并在其finally
上执行清理操作。
import keyboard
import sys
from time import sleep
def kb():
while True:
if keyboard.is_pressed("a"):
print("A key was pressed")
sys.exit(0)
def main():
kb()
if __name__ == "__main__":
main()
这是一些代码
import keyboard
import sys
def kb():
while True:
#your code here
if keyboard.is_pressed("a"): #replace with your key
print("Key interrupt detected")
#cleanup here
sys.exit()
#or here
if __name__ == "__main__":
kb()
该程序检查您是否在每个循环中都按下了“A”键。如果有,它会退出。
import keyboard
def mywait():
keyboard.read_key()
def my_function():
print("hello")
def my_exit():
quit()
keyboard.add_hotkey('h', my_function)
keyboard.add_hotkey('esc', my_exit)
while True:
mywait()