Seite 1 von 1

File watcher!

Verfasst: Montag 15. Juni 2009, 07:32
von max793
Hallo

ich bin auf der suche nach einen File watcher, der kontolliert ob eine Datei vorhanden ist oder nicht. Wenn diese Datei vorhanden ist dann soll er warten ansonsten soll er sich schließen.

Da ich glaube da es nicht sowas hier existiert muss ich nun mir selber einen programmieren. (macht auch nichts ist ja eine Übung;-) gerade für anfänger

was ich nun wissen wollte ist, ist es hier sinnvoll mit einer for- Schleife und immer wieder abfragen ob diese Datei da ist oder sollte man einen anderen weg nehmen. es sollte ein sehr einfaches Programm sein das wenige resorcen benötigt!

Verfasst: Montag 15. Juni 2009, 08:21
von max793
hallo ich habe nun das kleine Problem mit einer for-schleife lösen wollen jedoch weiß ich nicht woran es diesmal scheitert!

was sagt ihr dazu!

Code: Alles auswählen


import os
import time
import os.path

datei = "test.txt"

for datei in os.path.exists("C:/user/python_uebungsfile/"):
        time.sleep(0.5)
print "die Berechnung ist zu ende"


Verfasst: Montag 15. Juni 2009, 09:03
von Leonidas
``os.path.exists`` gibt kein Iterable zurück, sonden einen simplen Wert, nämlich ``True`` oder ``False`` daher kann man über den Wert nicht iterieren. Was du suchst ist eher eine ``while``-Schleife.

Verfasst: Montag 15. Juni 2009, 09:11
von Bitzkit
also so wirds nicht klappen...

das sollte gehen:

Code: Alles auswählen

import os
import time

datei = "test.txt"

while os.path.exists(os.path.join(os.getcwd(), datei)):
    time.sleep(0.5)
Du versuchst da über nen bool-wert zu iterieren.

Edit: zu spät :?

Verfasst: Montag 15. Juni 2009, 09:47
von max793
Hallo

ich habe nun deinen Vorschlag mir angesehen und ausprobiert (DANKE). jedoch ist das Programm noch nicht so wie ich es haben möchte. denn aus irgend einen Grund führt er mir die while schleife nicht aus und beendet sofort das Programm was er ja nicht tun soll. Erst nach dem die Datei gelöscht wurde soll er das Programm beenden. ich weiß nun nicht mehr wo das Problem liegt!!

Danke

Code: Alles auswählen


import os
import time
import os.path


datei = "C:\user\python_uebungsfile\test.txt"

while  os.path.exists(datei):
    time.sleep(20)

print "die Berechnung ist zu ende"



Verfasst: Montag 15. Juni 2009, 10:02
von Bitzkit
Wird ein Fehler geworfen oder bekommst du direkt deinen print ausgegeben ?

Schau einfach mal ob die Datei existiert (wenn es einfach nur durchläuft)

Verfasst: Montag 15. Juni 2009, 10:34
von Leonidas
Du hast den falschen Pfad, das ``\t`` im String fügt dir ein Tab ein.Benutze stattdessen Raw-Strings.

Verfasst: Montag 15. Juni 2009, 11:39
von Bitzkit
Mist, das hab ich glatt übersehen :oops: Kommt davon, wenn man kein Windows benutzt :roll:

Verfasst: Montag 15. Juni 2009, 14:16
von max793
hallo nochmals

ich habe mir das nochmals angeshen und bin drauf gekommen, das ich immer eine datei gewählt habe dich ich immer wieder aus dem mülleimer geholt habe vielleicht war das der grund für das scheitern.

Aber was ich nun überhaupt nicht versteh, sind die letzten beiden Einträge was bedeutet Raw-Strings und wie wirkt sich das auf mein kleines programm aus? danke für die mühe

Verfasst: Montag 15. Juni 2009, 15:02
von Pascal
Leonidas hat geschrieben:Du hast den falschen Pfad, das ``\t`` im String fügt dir ein Tab ein.
siehe:

Code: Alles auswählen

datei = "C:\user\python_uebungsfile\test.txt" 
>>> print datei
C:\user\python_uebungsfile	est.txt
Stattdessen:

Code: Alles auswählen

>>> os.path.join('C:','user','python_uebungsfile','test.txt')
'C:user\\python_uebungsfile\\test.txt'