Найти в Дзене
programmer's notes (python and more)

Программирование на языке python. Отслеживание событий файловой системы. Статья 2, библиотека watchdog

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Использование библиотеки watchdog для отслеживания событий в файловой системе

Данная статья является продолжением предыдущей статьи, посвящённой той же теме. На этот раз рассматриваем библиотеку watchdog.

Ниже представлена программа, аналогичная программе из предыдущей статьи. Напомню, что как и в предыдущей статье я исключаю вывод информации о временном файле, который создаёт редактор, с помощью которого я создаю текстовый файл. Временный файл содержит в имени символ '#'. Данная программа отслеживает события в файловой системе указанного каталога, при чём и в подкаталогах, т.е. рекурсивно.

Скриншот программы отслеживания событий файловой системы на основе библиотеки watchdog. Текст программы см. ниже по ссылке
Скриншот программы отслеживания событий файловой системы на основе библиотеки watchdog. Текст программы см. ниже по ссылке
primer320.py

Пример выполнения программы

Enter, чтобы закончить работу
Создание каталога ./prim/query
Создание файла ./prim/query/www.txt
Модификация ./prim/query/www.txt
Закрыт ./prim/query/www.txt
Удалён файл ./prim/query/www.txt
Перемещение/переименование ./prim/query

Сделаем ряд пояснений к тексту программы

  • В программе используются два модуля библиотеки watchdog.observers и watchdog.events. Первый модуль отвечает за процессом наблюдения, второй за обработку событий. Соответственно из первого модуля импортируется класс Observer, из второго FileSystemEventHandler.
  • Для того, чтобы запустить наблюдение нужно: 1. Создать объект класс FileSystemEventHandler для обработки событий файловой системы. 2. Создать объект класса Observer (у нас это obs1) и связать объект с объектом класса обработки событий: Observer.schedule(ev, path='./prim', recursive=True). Обращаю внимание на параметр recursive, в данном случае он указывает, что обработка будет рекурсивной. 3. Запустить наблюдение методом Observer.start().
  • В конце следует выполнить Observer.stop() (obs1.stop()).

Ну, пока всё!

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Мне доложили, что вы часто удаляете файлы
Мне доложили, что вы часто удаляете файлы