Guten Abend,
wie kann mein py Programm warten, solange etwas bestimmtes geschieht.
zB. Soll mir das Programm mitteilen, wenn eine Datei auf dem Desktop ist, aber wenn die Datei nicht auf dem Desktop ist, soll sie warten, bis die Datei vorhanden ist und mir dann das mitteilen.
warte solange Datei vorhanden und print("Datei vorhanden")
Danke im Voraus!
Gruß
pychart
Warten solange..
@pychart: Entweder Du prüfst regelmässig ob die Datei vorhanden ist, oder Du verwendest die API Deines Betriebssystems die für Benachrichtigungen bei Verzeichnis- und Dateiänderungen zuständig ist. Unter Linux wäre das beispielsweise die inotify-API, und da gibt's auch Python-Module für.
Wahrscheinlich ein Fall für watchdog. Aus der Doku auf PyPI:
Supported Platforms
* Linux 2.6 (inotify)
* Mac OS X (FSEvents, kqueue)
* FreeBSD/BSD (kqueue)
* Windows (ReadDirectoryChangesW with I/O completion ports; ReadDirectoryChangesW worker threads)
* OS-independent (polling the disk for directory snapshots and comparing them periodically; slow and not recommended)
Der Code soll quasi ausgeführt werden, wenn mein USB-Stick angeschlossen ist. Ist watchdog da wirklich geeignet?
@BlackJack, was du meinst, weiß ich jetzt nicht ganz genau, könntest du es vielleicht näher erläutern, bitte?
Habe es mit einer Directory Überprüfung (isdir) gemacht, aber der stoppt den Code nach der Überprüfung..
Danke und lieben Gruß
pychart
@BlackJack, was du meinst, weiß ich jetzt nicht ganz genau, könntest du es vielleicht näher erläutern, bitte?
Habe es mit einer Directory Überprüfung (isdir) gemacht, aber der stoppt den Code nach der Überprüfung..
Danke und lieben Gruß
pychart
@pychart: Was genau soll ich denn da näher erläutern? Code der regelmässig prüft ob eine Datei oder ein Verzeichnis vorhanden ist? Eine Bibliothek wie `inotify` oder eben was für's Betriebssystem das Du verwendest, oder etwas wie `watchdog`?
Falls es tatsächlich um USB-Stick anstecken geht, dann wäre unter Linux tatsächlich `udev` eine Möglichkeit. Vielleicht gibt's so eine API in der Richtung auch bei anderen Betriebssystemen. Unter Linux wäre ausserdem noch DBus eine Möglichkeit, falls dort ein Dienst läuft der solche Ereignisse ankündigt.
Falls es tatsächlich um USB-Stick anstecken geht, dann wäre unter Linux tatsächlich `udev` eine Möglichkeit. Vielleicht gibt's so eine API in der Richtung auch bei anderen Betriebssystemen. Unter Linux wäre ausserdem noch DBus eine Möglichkeit, falls dort ein Dienst läuft der solche Ereignisse ankündigt.