私はそのようなコードを持っているとしましょう
import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
class MyHandler(PatternMatchingEventHandler):
patterns = ["*/file.txt"]
def process(self, event):
"""
event.event_type
'modified' | 'created' | 'moved' | 'deleted'
event.is_directory
True | False
event.src_path
path/to/observed/file
"""
# the file will be processed there
print event.src_path, event.event_type # print now only for degug
if event.event_type == 'modified':
print fname
def on_modified(self, event):
self.process(event)
if __name__ == '__main__':
# args = sys.argv[1:]
fname = 'file.txt'
observer = Observer()
observer.schedule(MyHandler(), path='.')
observer.start()
try:
while True:
time.sleep(60)
except KeyboardInterrupt:
observer.stop()
observer.join()
私の目標は、ユーザーpatterns
が MyHandler クラスの変数に fname を入力することです。
import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
class MyHandler(PatternMatchingEventHandler):
patterns = ["*/"+fname]
def process(self, event):
"""
event.event_type
'modified' | 'created' | 'moved' | 'deleted'
event.is_directory
True | False
event.src_path
path/to/observed/file
"""
# the file will be processed there
print event.src_path, event.event_type # print now only for degug
if event.event_type == 'modified':
print fname
def on_modified(self, event):
self.process(event)
if __name__ == '__main__':
# args = sys.argv[1:]
fname = 'file.txt'
observer = Observer()
observer.schedule(MyHandler(), path='.')
observer.start()
try:
while True:
time.sleep(60)
except KeyboardInterrupt:
observer.stop()
observer.join()
上記のように何かを試しましたが、うまくいきませんでした。それは言いfname is not defined
ます。大丈夫、私patterns = [].append("*/"+fname)
も成功しませんでした。
次に、init関数を作成しようとしました
def __init__(fname):
self.patterns = [].append("*/"+fname)
のように渡されましたobserver.schedule(MyHandler(fname), path='.')
残念!どちらも成功しません。どうすればこれを達成できますか?