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

Stronę tą wyświetlono już: 121 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:

Listing 1
  1. import sys
  2. import time
  3. import logging
  4. from watchdog.observers import Observer
  5. from watchdog.events import LoggingEventHandler
  6. if __name__ == "__main__":
  7. logging.basicConfig(level=logging.INFO,
  8. format='%(asctime)s - %(message)s',
  9. datefmt='%Y-%m-%d %H:%M:%S')
  10. path = sys.argv[1] if len(sys.argv) > 1 else '.'
  11. event_handler = LoggingEventHandler()
  12. observer = Observer()
  13. observer.schedule(event_handler, path, recursive=True)
  14. observer.start()
  15. try:
  16. while True:
  17. time.sleep(1)
  18. except KeyboardInterrupt:
  19. observer.stop()
  20. 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

Komentarze