#python #watchdog #python-watchdog
Вопрос:
Я пытаюсь запустить свою программу для каждого нового файла в папке. Пытаясь реализовать мониторинг с помощью сторожевого пса, я столкнулся со следующей проблемой.
что моя программа делает с каждым новым файлом в папке? Он изменяет его(некоторые параметры в нем)таким образом, что создает новый файл с тем же именем файла. Я хочу, чтобы сторожевой пес определял, когда у меня есть новый файл в каталоге, затем, чтобы запустить мою программу, создайте новый файл с тем же именем(это то, что делает моя программа), но, что самое важное, я не хочу, чтобы моя программа снова запускалась в том же файле. Можно ли это сделать?
Вот MWE, который я уже пробовал.
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from watchdog.events import FileCreatedEvent
from watchdog.events import PatternMatchingEventHandler
class MyMonitorFolder(PatternMatchingEventHandler):
patterns = ["*.fits"]
def process(self, event):
src_path = "A/B/"
myProgram(src_path)
def on_created(self, event):
print (str(datetime.now()) " " str(event))
self.process(event)
if __name__ == "__main__":
event_handler = MyMonitorFolder()
observer = Observer()
observer.schedule(event_handler, path=src_path, recursive=False)
print("Monitoring started")
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Ответ №1:
Вы пробовали добавлять другие on_x
методы в свой MyMonitorFolder
класс?
class MyMonitorFolder(PatternMatchingEventHandler):
patterns = ["*.fits"]
def process(self, event):
src_path = "A/B/"
myProgram(src_path)
def on_created(self, event):
print (str(datetime.now()) " " str(event))
self.process(event)
def on_modified(self, event):
pass
def on_moved(self, event):
pass
def on_deleted(self, event):
pass
Я использую watchdog в Windows, и они, похоже, работают. Какова ваша операционная система?
Комментарии:
1. Спасибо за предложение. Я только что сделал, но он все еще делает то же самое, вероятно, потому, что моя программа все еще генерирует новый файл с тем же именем, и сторожевой пес обнаруживает его как новый файл. Я запускаю его в Linux.