Как отследить и скопировать изменённый файл через модуль watchdog?

Используя модуль watchdog решил отслеживать раз в 10 секунд изменение файла с последующим копированием. Вот только копирование не происходит. Где я мог ошибиться?

# Создаем класс наследник, через него может отслеживать изменения
class Handler(FileSystemEventHandler):
    def on_modified(self, event):
        print("Файл был изменён. Копируем")
        shutil.copyfile(file_track, folder_dest)

# Файл что отслеживается
file_track = 'D:/CODING/Project/test.txt'
# Папка куда перемещать будем
folder_dest = 'D:/CODING/Project/result/test.txt'

# Запуск всего на отслеживание
handle = Handler()
observer = Observer()
observer.schedule(handle, file_track, recursive=True)
observer.start()

# Программа будет срабатывать каждые 10 секунд
try:
    while(True):
        time.sleep(10)
except KeyboardInterrupt:
    observer.stop()

observer.join()
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
Класс Observer запускает отдельный поток исполнения, твой time.sleep(10) на него не влияет никоим образом.
Т.е. по идее приложение будет реагировать на изменение файла немедленно.

Из вопроса неясно, происходит ли вызов обработчика вообще. Уточни.
Имей ввиду, что операции с файловой системой - штука ненадёжная. Лови исключения, выброшенные shutil.copyfile(), и логгируй их!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы