Seite 1 von 1

programm soll warten, bis eine datei existiert

Verfasst: Sonntag 24. Februar 2013, 18:04
von Meeper
hi,
ich versuche, ein programm zu schreiben, das an einer bestimmten stelle stoppt, und erst weiter macht, wenn eine datei existiert.
also z.b. sowas in der art:

Code: Alles auswählen

import os
while os.path.exists("pfadname")==False:
    #todo
etc.

ich hab auch schon irgendwo diese idee/möglichkeit gefunden:

Code: Alles auswählen

import os

while True:
    if os.path.exists(pfadname)==True:
        break
auch wenn ich beim zweiten nicht weiß, ob das nicht irgendwie unsicher ist :o

ich hab jedenfalls beide ausprobiert (bei der ersten möglichkeit hab ich verschiedenes bei "#todo" hingeschrieben, z.b. "pass", "time.sleep(5)" oder ich hab es als methode geschrieben, die ich dann erneut aufgerufen habe - nicht sehr elegant :/ ), aber es hat nichts funktioniert.
kann mir vllt. jemand nen tipp geben? :)

PS: das komplette programm ruft ein php-skript auf, welches anschließend eine datei mit dem pfadnamen erzeugt. mit dem inhalt dieser datei soll anschließend weiter gearbeitet werden, sobald sie vorhanden ist.

kann mir jemand helfen? ;)
thx

Re: programm soll warten, bis eine datei existiert

Verfasst: Sonntag 24. Februar 2013, 18:23
von Sirius3
wenn ein Programm auf ein anderes wartet indem es die Existenz einer Datei prüft, hast Du schon einen schweren Designfehler.
1. ein drittes Programm könnte eine Datei mit gleichem Namen erzeugen, löschen, etc.
2. das Programm könnte abbrechen und nie eine Datei schreiben.
3. Soll der Inhalt weiterverarbeitet werden, könnte er noch nicht (komplett) geschrieben sein,
wenn das erste Programm ihn schon lesen will.
usw.

Mit den Informationen, die Du gegeben hast, kann man nicht sagen, warum was auch immer nicht „funktioniert“.

Re: programm soll warten, bis eine datei existiert

Verfasst: Sonntag 24. Februar 2013, 18:41
von BlackJack
@Meeper: Warum wartest Du nicht einfach bis das PHP-Skript durchgelaufen ist? Dazu gibt es auf den `subprocess.Popen`-Objekten eine `wait()`-Methode. Wenn man keine grosse Kontrolle über das externe Programm braucht, kann man auch einfach `subprocess.call()` verwenden. Das blockiert automatisch bis das externe Programm durchgelaufen ist.

Re: programm soll warten, bis eine datei existiert

Verfasst: Sonntag 24. Februar 2013, 20:10
von Meeper
danke ihr zwei,
hat funktioniert! :)
ja, ich hatte das mit dem subprocess.call() vorher zu umständlich gemacht, weil ich mich mit der methode nicht so gut auskannte und deshalb mist gebaut habe... ich hab mich jetzt nochmal genauer drüber informiert, und wie gesagt, es funkt ;)

lg