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



@Fox7777

вот код:

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:UsersAdminPycharmProjectspythonProject1venvlibsite-packageskeyboard_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.

Если вы нашли ошибку, попрошу скинуть код с исправлением ошибки. Я тупая башка, не понимаю)


Решения вопроса 1



@Fox7777 Автор вопроса

Кароче, сам решил, всё работает :

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

У вас файл закрывается перед записью, уберите 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()

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *