Допустим, у меня есть код как таковой
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()
Моя цель состоит в том, чтобы пользователь ввел имя fname в переменную patterns
в классе MyHandler.
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)
тоже безуспешно.
Затем я попытался создать функцию инициализации
def __init__(fname):
self.patterns = [].append("*/"+fname)
и прошел как observer.schedule(MyHandler(fname), path='.')
Облом!Также нет успеха.Как мне этого добиться?