如何在python中使用Pynput输出每次按下空格键之间的时间

问题描述

我正在尝试获取每次按空格键之间的时间,并将其输出到文本文件,这样它将显示每个延迟的可运行日志。我对其进行了测试,它可以运行,但是文本文件中没有任何内容。这是我的代码

from pynput.keyboard import Key,Listener
from playsound import playsound
import time

def on_press(key):
    global key2
    key2 = key

with Listener(
        on_press=on_press) as listener:
    listener.join()

while True:
    done = False
    if key2 == "'s'":
        file = open("script.txt","r")
        exec(file.read())
        file.close()
        playsound("beep.mp3")
        while done == False:
            time.sleep(0.01)
            timer += 0.01
            if key2 == "key.space":
                str = str + "\ntime.sleep(" + timer + ")"
                timer = 0
            if key2 == "'a'":
                str = str + "\ntime.sleep(" + timer + ")"
                timer = 0
                file = open("script.txt","a")
                file.write(str)
                file.close()
                done = True
            if key2 == "'d'":
                timer = 0
                str = ""
                done = True

请注意,我在编码方面还可以,但不是很好。谢谢。

解决方法

发生在我身上的一种简单方法是使用time.time()

import time
start = time.time()
diff = time.time() - start # Difference between starting time and current time

哪个可能导致

...
while True:
  start = time.time()
  ...
    if key2 == "key.space":
      diff = time.time() - start
,

编辑:此答案仅用于帮助解决“文本文件中什么都没有出现”部分。

file = open("script.txt","r")
file.close()

据此,

  1. 您正在以读取模式打开文件,因此无法对其进行写入
  2. 您将在打开文件后立即将其关闭。没有交互,这两行代码对我来说似乎微不足道。

如果您不知道如何使用python从文件中读取/写入文件,建议您先学习一下(有很多在线资源和对此的解释)。

此外,我建议使用能够直观地执行代码编辑器(例如PyCharm)来调试代码,以更好地理解代码无法按照您希望的方式运行的点。