allora, ho fatto qualcosa, ovviamente simulato tutto su pc.
in teoria poi saranno solo da cambiare i path.
cmq, questa la classe handler per watchdog:
codice:
from watchdog.events import FileSystemEventHandler
class MonitorFile(FileSystemEventHandler):
def on_deleted(self, event):
print(event.src_path, event.event_type)
poi lancio tutto così:
codice:
import shutil
import time
from watchdog.observers import Observer
from MonitorFile import MonitorFile
def crea_semaforo(file):
file_semaforo = './test_semaforo/semaforo'
shutil.move('./csv/' + file, './test_file/' + file)
f = open(file_semaforo, "a")
f.write("")
f.close()
def start_monitor(dir):
event_handler = MonitorFile()
observer = Observer()
observer.schedule(event_handler, path=dir, recursive=False)
print("Monitoring started")
observer.start()
try:
while (True):
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
e poi lancio tutto così:
codice:
if __name__ == '__main__':
fatture()
crea_semaforo(get_first_file('./csv'))
time.sleep(2)
dir_semaforo = './test_semaforo'
start_monitor(dir_semaforo)
- lancio la funzione fatture() --> ok
- lo spostamento del file, da cui deriva tutto, funziona
- la creazione del file semaforo funziona
- il monitor parte correttamente
- quando cancello il semaforo, vedo che l'evento viene intercettato
quello che mi manca è stoppare il monitor e ricominciare diciamo.
quindi, quando quello specifico file viene cancellato dovrei:
- stoppare il monitor
- rilanciare la crea_semaforo