[PYTHON] Watchdog est très utile pour la surveillance des fichiers

Frapper win32api est un non-sens, et je voulais l'écrire facilement, alors quand je cherchais avec pypi, j'ai trouvé quelque chose appelé watchdog.

Vous trouverez ci-dessous le code qui "vous avertit lorsque trois fichiers * .jpg, * .png, * .txt sont créés / modifiés / supprimés".

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()

Je pense que vous devriez écrire le processus que vous souhaitez exécuter dans on_created, on_modified, on_deleted.

Par exemple, vous pouvez l'automatiser en utilisant le chien de garde sans modifier le document et le créer vous-même en tant que make html.

La seule chose qui m'inquiétait lorsque je l'ai touché était que si c'était on_any_event lors de la création du fichier, il serait exécuté deux fois.

Comme vous pouvez le voir en utilisant ce code, il semble que l'événement create soit exécuté dans l'ordre on_created, on_modified.

Je ne sais pas ce qu'il y a à l'intérieur du système d'exploitation, donc ce n'est qu'une estimation.

Recommended Posts

Watchdog est très utile pour la surveillance des fichiers
python-dotfiles est pratique pour gérer les dotfiles
Zope.interface est utile pour pratiquer l'architecture hexagonale
C'est votre choix pour la gestion des fichiers env!
Une scène où le GPU est utile pour le deep learning?
À quoi sert Linux?