Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 键盘中断,但适用于所有键_Python_Python 3.x_Try Except - Fatal编程技术网

Python 键盘中断,但适用于所有键

Python 键盘中断,但适用于所有键,python,python-3.x,try-except,Python,Python 3.x,Try Except,我已经在网上搜索了大约一个小时,搜索像Keyboardinterupt这样的命令,然后搜索所有的键。我需要一个尝试和除了循环,我希望人们退出使用任何键这个。还有其他事情像键盘干扰或者我需要成为黑客吗 感谢您的时间键盘中断是Python捕获系统信号时引发的异常。你可以自己随意调高:调高键盘中断。但是,您不能自己生成SIGINT信号,信号必须发送到进程。按下CTRL-C可以获得类似的效果,它会向正在运行的进程发出SIGINT信号 如果你有一个循环,并想打破它的一个关键,你必须听任何键盘事件,并提出一

我已经在网上搜索了大约一个小时,搜索像Keyboardinterupt这样的命令,然后搜索所有的键。我需要一个尝试和除了循环,我希望人们退出使用任何键这个。还有其他事情像键盘干扰或者我需要成为黑客吗


感谢您的时间

键盘中断
是Python捕获系统信号时引发的异常。你可以自己随意调高:
调高键盘中断
。但是,您不能自己生成SIGINT信号,信号必须发送到进程。按下CTRL-C可以获得类似的效果,它会向正在运行的进程发出SIGINT信号

如果你有一个循环,并想打破它的一个关键,你必须听任何键盘事件,并提出一个异常时,它被捕获;您需要一种机制来执行代码并同时侦听事件

我可以想象这样的情况:

  • 使用代码启动Python子流程
  • 您进入一个循环,捕捉任何键盘按键
  • 当您获得按键事件时,您将SIGINT信号发送到另一个进程
例如,Python 2.7(未测试):

由于stdin缓冲,至少在Linux上,上述代码在按键后需要[Enter]。
但是,使用一些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)