Seite 1 von 1
While schleife in einer Klasse
Verfasst: Donnerstag 8. Oktober 2009, 12:19
von max793
hallo zusammen ich habe ein Problem ich will in einer KLasse einen File- wächter programmieren aber irgendwie klappt das nicht!!!
Er springt irgendwie über mein while und macht nicht das was ich will!!!
Wo könnte da der fehler sein????
Code: Alles auswählen
class CL_OPT_MAT:
# Funktionen:
def __init__(self):
self.MATLAB_Pfad = "C:/python_ms/"
self.VAR__Warten = "test.txt"
def Warten_Auf_Geloeschte_Daten(self):
while os.path.exists(os.path.koin(self.MATLAB_Pfad , self.VAR__Warten)):
time.sleep(2)
def sovler_finshed(self):
self.Warten_Auf_Geloeschte_Daten()
##
## ******************************************************************************
##
##
## ******************************************************************************
##
if (__name__ == '__main__'):
clOpt = CL_OPT_MAT()
clOpt.sovler_finshed()
Verfasst: Donnerstag 8. Oktober 2009, 12:26
von Seeker
Vielleicht, weil es in Zeile 12 os.path.join heissen sollte und nicht "koin"?
Verfasst: Donnerstag 8. Oktober 2009, 12:28
von max793
danke ein tippfehler von mir
Aber ich habe es auch schon ohne join probiert und auch das funktioniert nicht!!!!! irgendwas passt da nicht!!!!
Verfasst: Donnerstag 8. Oktober 2009, 12:33
von jbs
Code: Alles auswählen
import os.path
import time
class CL_OPT_MAT:
def __init__(self):
self.MATLAB_Pfad = "./"
self.VAR__Warten = "test.txt"
def Warten_Auf_Geloeschte_Daten(self):
while os.path.exists(os.path.join(self.MATLAB_Pfad , self.VAR__Warten)):
time.sleep(2)
def sovler_finshed(self):
self.Warten_Auf_Geloeschte_Daten()
if (__name__ == '__main__'):
clOpt = CL_OPT_MAT()
clOpt.sovler_finshed()
also bei mir funktioniert das.
wie äußert sich denn das "nicht funktionieren"?
Verfasst: Donnerstag 8. Oktober 2009, 12:34
von Pekh
Probiers mal mit weniger Ausrufezeichen
Du läßt den Code wirklich exakt so laufen, wie dort steht? Gibt es eine Fehlermeldung?
Verfasst: Donnerstag 8. Oktober 2009, 12:35
von max793
er wartet nicht!!! er für die Funktion aus, wenn ich sage er soll was ausschreiben macht er es nur das timesleep oder die schleife machen da probleme
Verfasst: Donnerstag 8. Oktober 2009, 12:38
von jbs
ich hab nichts verstanden
hast du eine fehlermeldung oder ähnliches?
Verfasst: Donnerstag 8. Oktober 2009, 12:38
von Rebecca
Existiert denn die Datei C:/python_ms/test.txt?
Verfasst: Donnerstag 8. Oktober 2009, 12:42
von max793
gott muss ich mich nun schämen!!!! ich habe immer mit den flaschen pfaden das gemacht!!!!!!!!!

Verfasst: Donnerstag 8. Oktober 2009, 12:44
von cofi
Schade .. ich haette jetzt auf einen Exclamation Overflow getippt.
Verfasst: Donnerstag 8. Oktober 2009, 12:49
von jbs
max793 hat geschrieben:flaschen pfaden
defnull nennt das bei sich routes
Verfasst: Donnerstag 8. Oktober 2009, 12:51
von Hyperion
Was ich mich ja frage ist das hier:
Wenn der OP sich da nicht nur mit der Terminilogie geirrt hat, trifft es doch den Kern: Wozu diese Klasse?
Oder in der Sprache des OP:
Wozu diese Klasse???
Die ist hier komplett unnötig!!!
SCNR

Verfasst: Donnerstag 8. Oktober 2009, 13:23
von /me
max793 hat geschrieben:gott muss ich mich nun schämen!!!! ich habe immer mit den flaschen pfaden das gemacht!!!!!!!!!

Bei "flaschen pfaden" bietet sich der Einsatz von Bottle an.
Verfasst: Donnerstag 8. Oktober 2009, 15:14
von Seeker
Ich kenne das Endziel des Codes nicht, aber weshalb eigentlich nicht einfach so (falls du schlussendlich mehrere Pfade aufrufen möchtest, etc.)?:
Code: Alles auswählen
def datei_pfad():
MATLAB_pfad = "C:/python_ms/"
VAR_warten = "test.txt"
return MATLAB_pfad, VAR_warten
def warten_auf_geloeschte_daten(stamm, datei):
while os.path.exists(os.path.join(stamm, datei)):
time.sleep(2)
print "Daten gelöscht"
def main():
stamm, datei = datei_pfad()
warten_auf_geloeschte_daten(stamm, datei)
if __name__ == "__main__":
main()
Oder wenn es bei einer zuvor definierten Datei bleibt:
Code: Alles auswählen
def main():
MATLAB_pfad = "C:/python_ms/"
VAR_warten = "test.txt"
while os.path.exists(os.path.join(MATLAB_pfad, VAR_warten)):
time.sleep(2)
print "Daten gelöscht"
if __name__ == "__main__":
main()
lg, Seeker
Verfasst: Donnerstag 8. Oktober 2009, 15:31
von Hyperion
Seeker hat geschrieben:Ich kenne das Endziel des Codes nicht, aber weshalb eigentlich nicht einfach so (falls du schlussendlich mehrere Pfade aufrufen möchtest, etc.)?:
Ich halte Deinen Code nicht für unbedingt sinnvoll. Wieso eine Funktion schreiben, die eh nur Konstanten zurückliefert? Aber das ganze ohne Klassen zu lösen ist nach Stand der Dinge in der Tat einfacher.
Ich würde es wenn so machen (ungetestet):
Code: Alles auswählen
BASE_PATH = r"C:/python_ms/"
FILENAMES = [r"test.txt"]
def wait_for_remove(filename):
while os.path.exists(filename):
time.sleep(2)
print "Daten gelöscht"
def main():
for filename in FILENAMES:
wait_for_remove(os.path.join(BASE_PATH, filename))
Verfasst: Donnerstag 8. Oktober 2009, 16:20
von Defnull
jbs hat geschrieben:max793 hat geschrieben:flaschen pfaden
defnull nennt das bei sich routes
*LOL* YMMD

!!!!!!!!