Я использую этот код для отслеживания создания новых файлов в каталоге на моем сетевом диске и возникновения проблем. Когда я тестирую тот же код в каталоге на локальном диске, проблем не возникает. Когда в каталоге создается новый файл, он вызывает событие и отправляет сообщение на консоль. Если файл создается в его подкаталоге, он также запускает событие и отправляет сообщение.
Но когда я меняю путь обратно к каталогу на сетевом диске, если в расписании указано recursion=True, то в каталоге или подкаталоге не запускаются никакие события, а если события recursion=False запускаются только в запланированном каталоге.
Конечная цель — постоянно контролировать сетевой диск, и каждый раз, когда новый файл загружается в подкаталог просматриваемого каталога, он отправляет файл в соответствующий каталог другого диска через ФТП. Пожалуйста, дайте мне знать, есть ли какая-то проблема, которую я упускаю при использовании Watchdog, или есть ли лучший способ достичь моей цели.
import sys
from time import sleep
from watchdog.events import FileSystemEventHandler
from watchdog.observers.polling import PollingObserver
from pathlib import Path
class MyEventHandler(FileSystemEventHandler):
def on_created(self, event):
path1=Path(event.src_path)
parpath=path1.parent
print("New file created in " + str(parpath))
return super().on_created(event)
if __name__ == "__main__":
path = /network/drive
event_handler = MyEventHandler()
observer = PollingObserver()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Подробнее здесь: https://stackoverflow.com/questions/708 ... dog-module