Как вывести время между каждым нажатием пробела с помощью pynput в python

#python #pynput

#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
  

Пожалуйста, обратите внимание, что я в порядке с кодированием, но не очень хорош. Спасибо.

Ответ №1:

Редактировать: Этот ответ предназначен исключительно для того, чтобы помочь с частью «в текстовом файле ничего не отображается».

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

В соответствии с этим,

  1. Вы открываете файл в режиме чтения, поэтому вы не можете записать в него
  2. Вы закрываете файл, как только открываете его. Взаимодействия нет, и эти две строки кода кажутся мне тривиальными.

Если вы не знаете, как читать / записывать из файла с помощью python, я предлагаю вам сначала узнать об этом (для этого есть много онлайн-ресурсов и объяснений).

Кроме того, я бы посоветовал отлаживать ваш код с помощью редактора, способного выполнять это визуально (например, PyCharm), чтобы лучше понять, в какой момент ваш код ведет себя не так, как вы хотите.

Комментарии:

1. О, извините, я не пояснил это ясно. Эта часть была просто для запуска кода. Я собирался использовать exec () для текстового файла, который я сейчас отредактировал. Место, где я пишу, находится немного дальше в коде. Кроме того, я запускал это в pycharm: однако я не смог найти решение проблемы. Спасибо, что так быстро ответили. Я думал, мне придется немного подождать.

2. А, понятно. Итак, в чем проблема, если быть точным? В текстовый файл абсолютно ничего не записывается, или время записывается неправильно?

3. Проблема в том, что в текстовом файле нет абсолютно ничего. Если вы запустите мой недавно отредактированный код, результат будет точно таким же. Я не хочу показаться раздражающим, но вам следует прочитать код более внимательно. Если вы посмотрите, место, где выводится текст, находится в той части, которая гласит if key2 == "'a'": str = str "ntime.sleep(" timer ")" timer = 0 file = open("script.txt", "a") file.write(str) file.close()

4. Причина, по которой у меня есть прочитанный файл, заключается в том, что я могу запустить генерируемый мной код, а затем добавить еще кое-что. Я планирую записать пробел и вывести его в виде вывода мыши в selenium.

5. О, теперь я понимаю, что вы пытаетесь сделать

Ответ №2:

Один простой способ, который приходит мне в голову, — это использовать 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