File watcher!

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
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

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!
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

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"

Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

``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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bitzkit
User
Beiträge: 14
Registriert: Mittwoch 21. Januar 2009, 08:16

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 :?
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

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"


Bitzkit
User
Beiträge: 14
Registriert: Mittwoch 21. Januar 2009, 08:16

Wird ein Fehler geworfen oder bekommst du direkt deinen print ausgegeben ?

Schau einfach mal ob die Datei existiert (wenn es einfach nur durchläuft)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du hast den falschen Pfad, das ``\t`` im String fügt dir ein Tab ein.Benutze stattdessen Raw-Strings.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bitzkit
User
Beiträge: 14
Registriert: Mittwoch 21. Januar 2009, 08:16

Mist, das hab ich glatt übersehen :oops: Kommt davon, wenn man kein Windows benutzt :roll:
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

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
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

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'
Antworten