Задать вопрос

Как отследить и скопировать изменённый файл через модуль 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()
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Класс Observer запускает отдельный поток исполнения, твой time.sleep(10) на него не влияет никоим образом.
Т.е. по идее приложение будет реагировать на изменение файла немедленно.

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

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

Похожие вопросы