#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()
В соответствии с этим,
- Вы открываете файл в режиме чтения, поэтому вы не можете записать в него
- Вы закрываете файл, как только открываете его. Взаимодействия нет, и эти две строки кода кажутся мне тривиальными.
Если вы не знаете, как читать / записывать из файла с помощью 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