Seite 1 von 1
inhalt einer *.txt datei
Verfasst: Montag 30. Oktober 2006, 15:32
von cyp++
hi @
kleines problem. erstmal der code:
Code: Alles auswählen
status = open('status.txt','a')
status.write('1')
while status == '1':
mach iwas
ich möchte halt, dass wenn der inhalt der status.txt == 1 ist iwas macht! aber da tut sich nix! hättet ihr eine lösung? wäre euch sehr dankbar!
mfg
Re: inhalt einer *.txt datei
Verfasst: Montag 30. Oktober 2006, 15:40
von gerold
cyp++ hat geschrieben:aber da tut sich nix!
Hallo cyp++!
Ich biete dir erst mal ein wenig Lesestoff:
http://www.python-forum.de/topic-6157.html
mfg
Gerold

Re: inhalt einer *.txt datei
Verfasst: Montag 30. Oktober 2006, 16:13
von Leonidas
cyp++ hat geschrieben:ich möchte halt, dass wenn der inhalt der status.txt == 1 ist iwas macht! aber da tut sich nix! hättet ihr eine lösung? wäre euch sehr dankbar!
Code: Alles auswählen
f = file('status.txt', 'r')
content = f.read()
f.close()
if content == '1\n':
print 'Mache nun iwas (oder Plätzchen)'
Verfasst: Dienstag 31. Oktober 2006, 15:00
von cyp++
funktioniert leider auch nicht richtig
Verfasst: Dienstag 31. Oktober 2006, 15:04
von Leonidas
cyp++ hat geschrieben:funktioniert leider auch nicht richtig
Dann liegt das daran, dass deine Datei nicht als einzigen Inhalt eine 1 mit einem Zeilenumbruch enthält sondern irgendetwas anderes.
Verfasst: Dienstag 31. Oktober 2006, 17:42
von cyp++
Code: Alles auswählen
status = open('status.txt', 'a')
status.write('1\n')
lol = status.read()
if lol == '1\n':
print 'lol'
er gibt mir kein lol aus!
Verfasst: Dienstag 31. Oktober 2006, 18:08
von Y0Gi
a) 'status' ist kein guter Bezeichner für ein Filehandle. 'f' oder 'fh' sind üblich.
b) Du musst die Datei schon zum Lesen und nicht zum Anhängen öffnen, d.h. open() muss als zweiten Parameter 'r' und nicht 'a' erhalten.
c) Beides zeigt das Beispiel von Leonidas bereits.
Update: Hab mich leicht verschaut, sorry. Du schreibst richtig in die Datei, allerdings solltest du diese wieder schließen (f.close()) und dann erneut öffnen, aber zum Lesen (s. Beispiel von Leonidas). Man kann die Datei auch zum Lesen und Schreiben zugleich öffnen, allerdings musst du dann nach dem Schreiben wieder "zurückspulen".
Bedenke auch, dass du bei mehrmaligem Ausführen des Codes immer wieder an die Datei anhängst, also dort "1\n1\n1\n"[...] enthalten sein kann. Um das zu umgehen, kannst du entweder die Datei immer komplett überschreiben ('w' statt 'a') oder zeilenweise lesen und nur die erste Zeile auswerten. Da es dir scheinbar nur um eine 1 oder (vermutlich) eine 0 in der Datei geht, kannst du den Zeilenumbruch auch ganz weglassen. Das 'b' habe ich auf Empfehlung der Dokumentation angehängt ("Appending 'b' is useful even on systems that don't treat binary and text files differently, where it serves as documentation.").
Code: Alles auswählen
# Datei neu schreiben
f = open('status.txt', 'wb')
f.write('1')
f.close()
# Datei einlesen
f = open('status.txt', 'rb')
line = f.readline()
f.close()
# auswerten
if line == '1':
print ':)'
Verfasst: Mittwoch 1. November 2006, 13:56
von cyp++
danke, das klappt jetzt'!
