Рубрики

Создайте сторожевой таймер в Python для поиска изменений в файловой системе

Много раз файл должен быть обработан во время его создания или его модификации. Это можно сделать, следуя изменениям в определенном каталоге. В python есть много способов следить за изменениями, сделанными в каталоге. Одним из таких способов является использование watchdog модуля. Как следует из названия, этот модуль наблюдает за данным каталогом и может уведомить, если файл создан или изменен.

Необходимые модули

  • Сторожевая собака
    Для установки сторожевого таймера запустите эту команду в терминале.
    pip install watchdog
    
  • логирование
    Он поставляется с Python, поэтому нет необходимости устанавливать его извне.

Теперь давайте погрузимся в код, который будет регистрировать все зарегистрированные изменения. Этот код будет регистрировать изменения, зарегистрированные только в текущем каталоге.

# импортировать модули

import sys

import time

import logging

from watchdog.observers import Observer

from watchdog.events import LoggingEventHandler

  

if __name__ == "__main__":

    # Установите формат для регистрации информации

    logging.basicConfig(level=logging.INFO,

                        format='%(asctime)s - %(message)s',

                        datefmt='%Y-%m-%d %H:%M:%S')

  

    # Установить формат для отображения пути

    path = sys.argv[1] if len(sys.argv) > 1 else '.'

  

    # Инициализировать обработчик событий регистрации

    event_handler = LoggingEventHandler()

  

    # Initialize Observer

    observer = Observer()

    observer.schedule(event_handler, path, recursive=True)

  

    # Запустить наблюдателя

    observer.start()

    try:

        while True:

            # Установите время ожидания потока

            time.sleep(1)

    except KeyboardInterrupt:

        observer.stop()

    observer.join()

Выход:

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

# модуль времени импорта, Observer, FileSystemEventHandler

import time

from watchdog.observers import Observer

from watchdog.events import FileSystemEventHandler

  

  

class OnMyWatch:

    # Установить каталог на часы

    watchDirectory = "/give / the / address / of / directory"

  

    def __init__(self):

        self.observer = Observer()

  

    def run(self):

        event_handler = Handler()

        self.observer.schedule(event_handler, self.watchDirectory, recursive = True)

        self.observer.start()

        try:

            while True:

                time.sleep(5)

        except:

            self.observer.stop()

            print("Observer Stopped")

  

        self.observer.join()

  

  

class Handler(FileSystemEventHandler):

  

    @staticmethod

    def on_any_event(event):

        if event.is_directory:

            return None

  

        elif event.event_type == 'created':

            # Событие создано, вы можете обработать его сейчас

            print("Watchdog received created event - % s." % event.src_path)

        elif event.event_type == 'modified':

            # Событие изменено, вы можете обработать его сейчас

            print("Watchdog received modified event - % s." % event.src_path)

              

  

if __name__ == '__main__':

    watch = OnMyWatch()

    watch.run()

Выход:

Рекомендуемые посты:

Создайте сторожевой таймер в Python для поиска изменений в файловой системе

0.00 (0%) 0 votes