Sto cercando di rilevare quando un file con un nome dato viene creato in una directory. Lo sto facendo grazie a watchdog. La creazione viene rilevata correttamente ma non so come terminare correttamente l'applicazione una volta effettuato il rilevamento.Rileva creazione file con watchdog
Il mio pezzo di codice è il seguente:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
import sys
import time
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
logging.basicConfig(level=logging.ERROR)
class MyEventHandler(FileSystemEventHandler):
def __init__(self, observer, filename):
self.observer = observer
self.filename = filename
def on_created(self, event):
print "e=", event
if not event.is_directory and event.src_path.endswith(self.filename):
print "file created"
self.observer.unschedule_all()
self.observer.stop()
def main(argv=None):
path = argv[1]
filename = argv[2]
observer = Observer()
event_handler = MyEventHandler(observer, filename)
observer.schedule(event_handler, path, recursive=False)
observer.start()
observer.join()
return 0
if __name__ == "__main__":
sys.exit(main(sys.argv))
Sono nuovo di pitone e io non riesco a capire cosa è sbagliato. Il rilevamento sembra essere pianificato in un thread dedicato e il metodo join() è in attesa che questo thread termini. Quindi, suppongo che non stia chiamando il metodo giusto sull'osservatore per interrompere l'attesa/il ciclo, ma la documentazione del watchdog sembra davvero non chiara per indicare quali sono i metodi che possono essere usati.
Fa qualcuno ha un'idea come posso raggiungere il mio obiettivo?
Grazie per aver postato questo aggiornamento – jgyou