在Python中扫描Keypress

Abh*_*ogi 6 python linux scripting

我通过使用time time.sleep(3500)的时间模块暂停了一个脚本让我们说3500秒.

现在,我的目标是在脚本处于睡眠状态时扫描按键,我的意思是它在这一行.

如果按下"按下Ctrl + R",我想重新启动脚本.

对于前..考虑

#!/usr/bin/python
import time
print "Hello.. again"
while True:
     time.sleep(3500)
Run Code Online (Sandbox Code Playgroud)

现在,当代码在最后一行时,如果我按Ctrl + R,我想重新打印"Hello .. again"行.

Ste*_*202 4

我知道这并不能完全回答您的问题,但您可以执行以下操作:

  1. 将程序逻辑代码放在函数中,例如perform_actions。当程序启动时调用它。
  2. 代码运行后,开始监听中断
    • 也就是说,用户必须按ctrl+c而不是ctrl+ r
  3. 收到中断后,等待半秒;如果再次按ctrl+ ,则退出。c
  4. 否则,重新启动代码。

因此,一个中断的行为就像你想要的ctrl那样r。两次快速中断退出程序。

import time

def perform_actions():
    print("Hello.. again")

try:
    while True:
        perform_actions()
        try:
            while True: time.sleep(3600)
        except KeyboardInterrupt:
            time.sleep(0.5)
except KeyboardInterrupt:
    pass
Run Code Online (Sandbox Code Playgroud)

使用信号(在本例中)的一个很好的副作用SIGINT是您还可以通过其他方式重新启动脚本,例如通过运行kill -int <pid>