1

処理されたメソッドから値を返そうとしています。私はpyinotifyを使用する初心者です。コードは次のとおりです。

import pyinotify
import time


wm = pyinotify.WatchManager()
mask = pyinotify.IN_OPEN

class EventHandler(pyinotify.ProcessEvent):
    endGame = False
    def process_IN_OPEN(self, event):
        print "Opening:", event.pathname
        endGame = True

handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)

wdd = wm.add_watch('./file.json', mask, rec=True)
wm.rm_watch(wdd.values())

while not handler.endGame:
    time.sleep(1)

notifier.stop()
print "end game"

しかし、file.jsonを開くと、endGame変数がTrueに変わることはありません。私は何が間違っているのですか?

4

1 に答える 1

0

問題はハンドラーにあります。コードを見てみましょう(重要な行にコメントを追加します):

class EventHandler(pyinotify.ProcessEvent):
    endGame = False   # Here class attribute "endGame" is declared

    def process_IN_OPEN(self, event):
        print "Opening:", event.pathname
        endGame = True  # Here !local variable! is defined process_IN_OPEN

したがって、メソッドのスコープで新しい変数を定義しますprocess_IN_OPENEventHandlerインスタンス属性を参照する場合は、selfを追加する必要があります。

self.endGame = True
于 2012-08-20T07:56:14.243 に答える