Python 键盘中断,但适用于所有键
我已经在网上搜索了大约一个小时,搜索像Keyboardinterupt这样的命令,然后搜索所有的键。我需要一个尝试和除了循环,我希望人们退出使用任何键这个。还有其他事情像键盘干扰或者我需要成为黑客吗Python 键盘中断,但适用于所有键,python,python-3.x,try-except,Python,Python 3.x,Try Except,我已经在网上搜索了大约一个小时,搜索像Keyboardinterupt这样的命令,然后搜索所有的键。我需要一个尝试和除了循环,我希望人们退出使用任何键这个。还有其他事情像键盘干扰或者我需要成为黑客吗 感谢您的时间键盘中断是Python捕获系统信号时引发的异常。你可以自己随意调高:调高键盘中断。但是,您不能自己生成SIGINT信号,信号必须发送到进程。按下CTRL-C可以获得类似的效果,它会向正在运行的进程发出SIGINT信号 如果你有一个循环,并想打破它的一个关键,你必须听任何键盘事件,并提出一
感谢您的时间
键盘中断
是Python捕获系统信号时引发的异常。你可以自己随意调高:调高键盘中断
。但是,您不能自己生成SIGINT信号,信号必须发送到进程。按下CTRL-C可以获得类似的效果,它会向正在运行的进程发出SIGINT信号
如果你有一个循环,并想打破它的一个关键,你必须听任何键盘事件,并提出一个异常时,它被捕获;您需要一种机制来执行代码并同时侦听事件
我可以想象这样的情况:
- 使用代码启动Python子流程
- 您进入一个循环,捕捉任何键盘按键
- 当您获得按键事件时,您将SIGINT信号发送到另一个进程
但是,使用一些Python模块(例如
getc
)可以很容易地解决这个问题。这是处理“按下Ctrl+C以中断”消息的大量额外工作。回答得不错,因为我误读了这个问题。非常感谢。那么我将使用线程模块。祝你愉快day@Stijn根据一条评论,线程不会做你想做的事情。@TemporalWolf它全部使用循环或线程,单个循环不会让我在等待输入时继续做其他事情。谢谢你。
import multiprocessing
import time
import signal
import select
import sys
import os
def my_code():
while True:
print 'Do something...'
time.sleep(1)
if __name__ == '__main__':
p = multiprocessing.Process(target=my_code)
p.start()
# wait for a key
select.select([sys.stdin],[],[])
os.kill(p.pid, signal.SIGINT)