Python - watchdog czyli obserwowanie folderów i plików pod względem zachodzących zmian

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 3980 razy

Biblioteka watchdog umożliwia obserwowanie pliku lub folderu pod względem zachodzących zmian. A zmiany te mogą być różne, np. nadpisanie zawartości pliku, zmiana nazwy pliku, usunięcie pliku lub folderu. Wszystkie te operacje mogą być monitorowane za pomocą watchdog-a. Coby zbyt dużo nie przynudzać oto jak można prosto doinstalować tą bibliotekę:

pip3 install watchdog

W wyniku czego powinno wyświetlić się mniej więcej coś takiego:

Collecting watchdog
  Downloading watchdog-0.8.3.tar.gz (83kB)
Collecting PyYAML>=3.10 (from watchdog)
  Downloading PyYAML-3.12-cp34-cp34m-win_amd64.whl (195kB)
Collecting argh>=0.24.1 (from watchdog)
  Downloading argh-0.26.2-py2.py3-none-any.whl
Collecting pathtools>=0.1.1 (from watchdog)
  Downloading pathtools-0.1.2.tar.gz
Installing collected packages: PyYAML, argh, pathtools, watchdog
  Running setup.py install for pathtools: started
    Running setup.py install for pathtools: finished with status 'done'
  Running setup.py install for watchdog: started
    Running setup.py install for watchdog: finished with status 'done'
Successfully installed PyYAML-3.12 argh-0.26.2 pathtools-0.1.2 watchdog-0.8.3

Powyższa instalacja dotyczy Windowsa, aczkolwiek nie różni się ona zbytnio od instalacji na Linkux-ie.

Oto przykład z strony pypi.python.org pokazujący w jaki sposób można wykorzystać watchdog-a do obserwacji folderu:

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() observer = Observer() observer.schedule(event_handler, path, recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()

Przykład działania:

2017-03-27 13:04:37 - Created file: .car.py
2017-03-27 13:04:37 - Modified file: .car.py
2017-03-27 13:04:37 - Modified file: .car.py
2017-03-27 13:05:16 - Moved file: from .car.py to .car2.py
2017-03-27 13:05:16 - Modified file: .car2.py
Strony powiązane
strony powiązane
  1. pypi.python.org/pypi/watchdog
Propozycje książek