Crea un timer watchdog in Python per cercare le modifiche nel filesystem

| | | | | | |

Molte volte un file deve essere elaborato durante la sua creazione o modifica. Questo può essere fatto seguendo le modifiche in una directory specifica. Esistono molti modi in Python per tenere traccia delle modifiche apportate a una directory. Uno di questi è utilizzare il modulo watchdog . Come suggerisce il nome, questo modulo monitora la directory specificata e può notificare se un file viene creato o modificato.

Moduli richiesti

  • Cane da guardia
    Per installare il watchdog, esegui questo comando in un terminale.
    pip install watchdog 
  • registrazione
    Viene fornito con Python, quindi non è necessario installarlo esternamente.

Ora immergiamoci nel codice che registrerà tutte le modifiche registrate. Questo codice registrerà solo le modifiche archiviate nella directory corrente.


# import modules

import sys

import ora

import registrazione

da watchdog.observers import Observer

from watchdog.events import LoggingEventHandler

se __ nome__ = = " __ main__ " :

# Imposta il formato per la registrazione delle informazioni

logging.basicConfig (livello = logging.INFO,

formato = `% (asctime) s -% (messaggio) s` ,

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


# Installa il formato per visualizzare il percorso

percorso = sys.argv [ 1 ] if len (sys.argv) > 1 else `.`


# Inizializza il gestore dell`evento di registrazione

event_handler = LoggingEventHandler ()


# Inizializza Observer

osservatore = Osservatore ()

Observer.schedule (event_handler, percorso, ricorsivo = Vero )


# Avvia osservatore

osservatore.start ()

prova :

while True :

# Se t timeout flusso

time.sleep ( 1 )

tranne KeyboardInterrupt:

Observer.stop ()

Observer.join ()

Risultato:

Il codice sopra registrerà tutte le modifiche registrate nella directory. Se desideri apportare modifiche durante la creazione o la modifica di un file, puoi farlo utilizzando il codice seguente.


# import time module, Observer , FileSystemEventHandler

import ora

da watchdog.observers import Observer

da watchdog.events import FileSystemEventHandler



class OnMyWatch:

# Imposta la directory da guardare

watchDirectory = "/ dare / l`indirizzo / di / directory"


def __ init __ ( self ):

self .observer = Observer ()

def run ( self ):

event_handler = Gestore ( )

self . osservatore.schedule (event_handler, self . watchDirectory, ricorsivo = True )

self . osservatore .start ()

prova :

while True :

time.sleep ( 5 )

tranne :

self < /codice> . osservatore.stop()

print ( "L`osservatore si è fermato" )

self . osservatore.join()


classe Gestore (FileSystemEventHandler ):


@staticmethod

def on_any_event (evento):

if event.is_directory:

return Nessuno

elif event.event_type = = `creato` :

# L`evento è stato creato, puoi elaborarlo ora

print ( "Watchdog ha ricevuto l`evento creato -% s." % event.src_path)

elif event.event_type = = `modificato` :

# L`evento è stato modificato, puoi gestirlo ora

print ( " Watchdog ha ricevuto l`evento modificato -% s. " % event.src_path)



if __ nome__ = = ` __main__` :

guarda = OnMyWatch()

watch.run()

Risultato: