Fox7777
@Fox7777
Люблю python

Выводит ошибку, но я не пойму в чём проблема?

вот код:
import keyboard


save = open('hack.txt', 'w')


def print_pressed_keys(e):
    save.write(str(e) + ' ' + str(e.name))

save.close()
keyboard.hook(print_pressed_keys)
keyboard.wait()

вот ошибка:
Traceback (most recent call last):
  File "C:\Users\Admin\PycharmProjects\pythonProject1\venv\lib\site-packages\keyboard\_generic.py", line 22, in invoke_handlers
    if handler(event):
  File "D:/programmer/123/main.py", line 8, in print_pressed_keys
    save.write(str(e) + ' ' + str(e.name))
ValueError: I/O operation on closed file.

Если вы нашли ошибку, попрошу скинуть код с исправлением ошибки. Я тупая башка, не понимаю)
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
Fox7777
@Fox7777 Автор вопроса
Люблю python
Кароче, сам решил, всё работает :
import keyboard


def print_pressed_keys(e):
    save = open('hack.txt', 'a')
    save.write(str(e) + ' ' + str(e.name)+"\n")


keyboard.hook(print_pressed_keys)
keyboard.wait()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
0ralo
@0ralo
Нормальный такой питонист + начинаю Android::Java
У вас файл закрывается перед записью, уберите save.close()
Ответ написан
@pythonMyLife
Тут проще будет использовать менеджер контекста with/as:

import keyboard

def print_pressed_keys (file):
    def wraps (e):
        file.write (str (e) + ' ' + str (e.name))

    return wraps

with open ('hack.txt', 'w') as file:
    keyboard.hook(print_pressed_keys (file))
    keyboard.wait()


Если нужно обьяснение происходящего, напиши в комментах (просто лень писать напрасно если не надо)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы