0

そこで、プログラミングについてもっと学ぶのに役立つ小さなスターター プロジェクトとしてキーロガーを作ろうとしています。キーボード入力を検出するためにpynputを使用していますが、変数に文字を追加し続けたいline. これから紹介するスクリプトはline += str2、関数の外に置くと機能しますが、中には機能しません (str変数は、この正確なことをデバッグするためにそこに置かれました)。

コードは次のとおりです。

import msvcrt, datetime
from pynput.keyboard import Key, Listener

date = str(datetime.date.today())
line = "a"
str1 = "1"
str2 = "2"

#Saves given data to a dated text file.
def saveToFile(data):
    file = open("keylog_{}.txt" .format(date), "a+")
    file.write(str(data))
    file.close()

def on_press(key):
    line += str2
    print(line)

with Listener(on_press=on_press, on_release=None) as listener:
    listener.join()

なぜこれが起こるのかを理解するのを手伝ってくれる人に前もって感謝します.

4

2 に答える 2

2

on_press 関数に送信されたキーで何もしていません。これを意味しましたか:

def on_press(key):
    global line
    line += key
    print(line)

また、例では行が割り当てられません。グローバルを実行するには、グローバルキーワードを使用するか、状態保持のためにクラス/クロージャーを作成する必要があります。

于 2018-06-09T23:17:45.683 に答える