Text File lesen und Wert in Variable speichern

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
SaberGFX
User
Beiträge: 10
Registriert: Samstag 21. September 2019, 17:13

Hallo Forum.

Ich habe folgende Aufgabenstellung die ich nicht lösen kann.
Ich habe eine Text Datei mit einer Zeile Text. Von dieser möchte ich den ersten Buchstaben mit einer if-Abfrage prüfen und den Wert in einer Variable speichern.
Leider kann ich den Wert schon nicht prüfen. Hier mein vorgehen.

Code: Alles auswählen

datei = open('marker.txt','r')

if datei.read(1) == "a":
    print("So geht es nicht.")
Vielen Dank und Gruß, Saber.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Und warum geht das nicht?
SaberGFX
User
Beiträge: 10
Registriert: Samstag 21. September 2019, 17:13

Oh scheint doch zu gehen. Also die if-Abfrage!

Aber den ersten Wert nun in eine Variable zu schreiben geht nicht. Dort speichert er mir den falschen Wert.
In der Text-Datei steht als Test "alpha".
Und wenn ich b printe bekomme ich "l".

Code: Alles auswählen

b = 0
if datei.read(1) == "a":
    print("Oh geht doch")
    b = datei.read(1) 
    print(b)
    datei.close()
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Erst liest Du das erste Zeichen und vergleichst es mit "a" und dann liest Du das zweite Zeichen und speicherst es in `b`. So hast Du es programmiert. Wenn Du es anders willst, dann mußt Du es anders programmieren.
Die Datei sollte man in jedem Fall wieder schließen, am besten geht das mit dem with-Statement.
Das `b = 0` wird nicht gebraucht und kann weg.
Benutzeravatar
snafu
User
Beiträge: 6867
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Um das noch etwas deutlicher zu machen: Die Angabe bei read() ist relativ zur aktuellen Position zu sehen. Wenn man schon ein Zeichen gelesen hat, dann steht der interne Cursor vor dem zweiten Zeichen, sodass ein erneutes read(1) das zweite Zeichen liefert.
Antworten