Warten solange..

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
pychart
User
Beiträge: 17
Registriert: Dienstag 27. Dezember 2016, 16:40

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
BlackJack

@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.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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)
pychart
User
Beiträge: 17
Registriert: Dienstag 27. Dezember 2016, 16:40

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
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Für welches Betriebssystem benötigst du es denn?
Benutzeravatar
pyHoax
User
Beiträge: 84
Registriert: Donnerstag 15. Dezember 2016, 19:17

Der Code soll quasi ausgeführt werden, wenn mein USB-Stick angeschlossen ist. I
Unter Linux kann an das mit udev trriggern. (Stichwort udev/rules.d)
BlackJack

@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.
pychart
User
Beiträge: 17
Registriert: Dienstag 27. Dezember 2016, 16:40

Bräuchte es unter Windows...
Sprich solang USB nicht drinnen, dann soll es warten bis USB drinnen ist und dann den Code ausführen bzw. USB drinnen heißt => H:\* existiert.

*je nachdem Welcher Buchstabe

Gruß
Antworten