[PYTHON] Watchdog ist sehr nützlich für die Dateiüberwachung

Win32api zu treffen ist Unsinn, und ich wollte es einfach schreiben. Als ich mit pypi suchte, fand ich etwas namens watchdog.

Unten ist der Code, der "mich benachrichtigt, wenn drei Dateien * .jpg, * .png, * .txt erstellt / bearbeitet / gelöscht werden".

watchdog_example.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
import os

from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer

BASEDIR = os.path.abspath(os.path.dirname(__file__))

def getext(filename):
    return os.path.splitext(filename)[-1].lower()

class ChangeHandler(FileSystemEventHandler):

    def on_created(self, event):
        if event.is_directory:
            return
        if getext(event.src_path) in ('.jpg','.png','.txt'):
            print('%s has been created.' % event.src_path)

    def on_modified(self, event):
        if event.is_directory:
            return
        if getext(event.src_path) in ('.jpg','.png','.txt'):
            print('%s has been modified.' % event.src_path)

    def on_deleted(self, event):
        if event.is_directory:
            return
        if getext(event.src_path) in ('.jpg','.png','.txt'):
            print('%s has been deleted.' % event.src_path)

if __name__ in '__main__':
    while 1:
        event_handler = ChangeHandler()
        observer = Observer()
        observer.schedule(event_handler,BASEDIR,recursive=True)
        observer.start()
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            observer.stop()
        observer.join()

Ich denke, Sie sollten den Prozess, den Sie ausführen möchten, in on_created, on_modified, on_deleted schreiben.

Sie können es beispielsweise mithilfe von Watchdog automatisieren, ohne das Dokument zu bearbeiten und es selbst als HTML-Datei zu erstellen.

Das einzige, worüber ich mir Sorgen machte, als ich es berührte, war, dass wenn es beim Erstellen der Datei on_any_event war, es zweimal ausgeführt wurde.

Wie Sie anhand dieses Codes sehen können, wird das Erstellungsereignis anscheinend in der Reihenfolge on_created, on_modified ausgeführt.

Ich weiß nicht, was sich im Betriebssystem befindet, es handelt sich also nur um eine Schätzung.

Recommended Posts

Watchdog ist sehr nützlich für die Dateiüberwachung
Python-Dotfiles ist praktisch für die Verwaltung von Dotfiles
Zope.interface ist nützlich zum Üben der hexagonalen Architektur
Dies ist Ihre Wahl für die Verwaltung von env-Dateien!
Eine Szene, in der GPU für tiefes Lernen nützlich ist?
Wofür ist Linux?