При режиме записи 'w' данные некорректно записываются в файл

Режим записи 'a'

Код:

def print_pressed_keys(e):
    with open('key_records.txt', 'a', encoding='utf-8') as f:
        f.write(f'{e.name, e.scan_code, e.event_type, }\n')



keyboard.hook(print_pressed_keys)
keyboard.wait('Ctrl+Shift')

Ввод:mmmmmmmmmqqqqqq

В файле:

('m', 50, 'down')
('m', 50, 'up')
('m', 50, 'down')
('m', 50, 'up')
('m', 50, 'down')
('m', 50, 'up')

и т.д.

Режим записи 'w'

Код:

def print_pressed_keys(e):
   with open('key_records.txt', 'w', encoding='utf-8') as f:
       f.write(f'{e.name, e.scan_code, e.event_type, }\n')

   keyboard.hook(print_pressed_keys)
   keyboard.wait('Ctrl+Shift')

Ввод:qwqwqwa

В файле ('a', 30, 'up')**

Почему так происходит?

P.S Windows 7


Ответы (1 шт):

Автор решения: insolor

При открытии файла в режиме 'w' создается новый файл или очищается существующий. Поэтому каждый раз когда вы нажимаете на кнопку у вас старое содержимое стирается, после закрытия файла остается информация только о последнем нажатии.

Подробнее см.:

→ Ссылка