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

How to output the time between each press of the spacebar with pynput in python

我试图获取每次按下空格键之间的时间并将其输出到文本文件,以便它显示每次延迟的可运行日志。我对其进行了测试,它运行了,但是文本文件中什么也没有出现。这是我的代码:

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),以便更好地理解代码未按预期方式运行的地方。