Dauerhafte Überwachung Laufwerksordner

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
TorGra
User
Beiträge: 3
Registriert: Dienstag 4. Dezember 2018, 21:01

Hallo Zusammen,

ich versuche gerade herauszufinden wie ich einen Ordner auf meinem PC dauerhaft überwachen kann und sobald eine bestimmte Datei vorhanden ist ein Befehl automatisch ausgeführt wird.

Um das Ganze etwas genauer zu erklären:

Ich habe ein anderes Tool, welches in unregelmäßigen Abständen eine TXT-Datei erstellt und in einem bestimmten Ordner ablegt.
Nun würde ich gerne mithilfe des Python-Skripts im Sekunden überprüfen ob diese Datei vorhanden ist.
Wenn dies der Fall ist soll die Datei ausgelesen werden und anhand des Inhalts ein bestimmter Befehl ausgeführt werden.
Wenn dies nicht der Fall ist, soll nicht passieren und nach einer Sekunde der Vorgang erneut durchgeführt werden.

Das Auslesen, Befehl ausführen und Löschen der Datei funktioniert problemlos, jedoch habe ich noch keine Lösung gefunden wie ich die dauerhafte Überwachung hinbekommen.

Ich hoffe ihr könnt mir weiterhelfen, habe das Gefühl, dass die Lösung eigentlich sehr einfach sein sollte und ich irgendwie auf dem Schlauch stehe. :/

Danke im Voraus
Torsten
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

wenn das einmal funktioniert ist alles was du brauchst eine while-Schleife und ein time.sleep(1)
TorGra
User
Beiträge: 3
Registriert: Dienstag 4. Dezember 2018, 21:01

__deets__ hat geschrieben: Dienstag 4. Dezember 2018, 22:36 wenn das einmal funktioniert ist alles was du brauchst eine while-Schleife und ein time.sleep(1)
Genau das habe ich versucht, aber ich gehe davon aus das ich dabei irgendwo einen Fehler eingebaut habe.
Hier das aktuelle Skript:

Code: Alles auswählen

import os
import time

while True:
    
    resultsExist = os.path.exists('results.txt')

    if resultsExist == 'True':
        resultsFile = open('results.txt')
        resultsContent = resultsFile.read()

	// Lesen und Ausführen bestimmter Befehle (umrelevant, daher zur besseren Übersicht rausgelöscht)

        resultsFile.close()
        os.remove('results.txt')

    else:
        time.sleep(10)
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du vergleichst mit ‘True’. Das ist ein STRING! Nicht der Wahrheitswert True (ohne Anführungszeichen). Das ist dein erster Fehler. Der zweite ist, das warten nur in den else-zweit zu tun. Dadurch wartest du genau dann gar nicht, wenn du die Datei gefunden & entfernt hast.
TorGra
User
Beiträge: 3
Registriert: Dienstag 4. Dezember 2018, 21:01

__deets__ hat geschrieben: Mittwoch 5. Dezember 2018, 10:22 Du vergleichst mit ‘True’. Das ist ein STRING! Nicht der Wahrheitswert True (ohne Anführungszeichen). Das ist dein erster Fehler. Der zweite ist, das warten nur in den else-zweit zu tun. Dadurch wartest du genau dann gar nicht, wenn du die Datei gefunden & entfernt hast.
Danke für deine Hilfe, jetzt funktioniert es wie gewünscht. :)
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Um Dateisysteme zu überwachen, gibt es spezielle Betriebsystem-Funktionen und etliche Module, die diese kapseln:
https://pypi.org/project/watchdog/
oder die Liste, die auf dieser Seite verlinkt ist:
pnotify
unison fsmonitor
fsmonitor
guard
pyinotify
inotify-tools
jnotify
treewalker
file.monitor
pyfilesystem
Antworten