gpt4 book ai didi

python - 在程序运行时按下任意键时停止python程序

转载 作者:行者123 更新时间:2023-12-05 04:27:29 25 4
gpt4 key购买 nike

我最近了解了 python 模块信号。有了它,我们可以捕获一个 SIGINT 并在捕获它之后做我们想做的事情。我如下使用它。在那种情况下,我只是使用 SIGINT 来打印该程序将被停止并停止该程序。

import signal  
import os
import time

def signalHandler(signalnumb, frame):
print("Signal Number:", signalnumb, " Frame: ", frame)
print('Exiting the program...')
os._exit(0)

signal.signal(signal.SIGINT, signalHandler)

c=0
# Loop infinite times using the while(1) which is always true
while 1:
print(c)
#sleep for 1 seconds using the sleep() function in time
time.sleep(1)
c=c+1

现在我想从键盘发出任何信号(例如按“q”),一旦收到信号,python 程序就应该停止。有没有人对如何做到这一点有一些经验?接受任何其他方法而不是使用信号模块(例如使用多线程)。

编辑1-后来我尝试按照类似问题之一的建议使用 pynput 模块。我肯定做错了。它没有像我预期的那样工作。这意味着通过按键,我无法停止 for 循环的运行。

from pynput import keyboard
import time

def on_press(key):
for i in range(100):
print(i)
time.sleep(1)
if key == keyboard.Key.esc:
return False # stop listener
try:
k = key.char # single-char keys
except:
k = key.name # other keys
if k in ['1', '2', 'left', 'right']: # keys of interest
# self.keys.append(k) # store it in global-like variable
print('Key pressed: ' + k)
return False # stop listener; remove this if want more keys

listener = keyboard.Listener(on_press=on_press)
listener.start() # start to listen on a separate thread
listener.join() # remove if main thread is polling self.keyspython

有人可以指出如何以正确的方式使用 pynput 吗?

最佳答案

这是我最初的实现:

a = input('Press a key to exit')
if a:
exit(0)

但是,您似乎需要一段代码,允许单击任何键并立即退出程序,而无需按回车键。这可能是更好的方法:

import readchar
print("Press Any Key To Exit")
k = readchar.readchar()

希望这对您有所帮助!

关于python - 在程序运行时按下任意键时停止python程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72793409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com