Guten Morgen,
...aber erst einmal ein dickes Danke ans Forum: Ihr habt mir hier schon so super weitergeholfen, einfach klasse! Und hier geht es wenigstens nicht so "hochnäsig" wie in anderen (vor allem C-) Forum zu. Weiter so!
Jetzt aber zu meiner Frage, die mir langsam wirklich peinlich ist. Es sollte doch eigentlich kein Thema sein was aus einer simplen Datei auszulesen?! Aber ich bekomme es nicht auf die Reihe.
Ich erstelle eine Datei und schreibe z.B. die Zahl 32 rein. Wie kann ich diese Zahl nun wieder auslesen? f.readline ergibt nur Mist, genauso f.read - die Datei wurde aber korrekt angelegt und der Eintrag ist auch vorhanden.
Kann mir da bitte jemand weiterhelfen?
Peinliche Frage: aus Datei lesen
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Corny!Corny hat geschrieben: Ich erstelle eine Datei und schreibe z.B. die Zahl 32 rein. Wie kann ich diese Zahl nun wieder auslesen? f.readline ergibt nur Mist, genauso f.read - die Datei wurde aber korrekt angelegt und der Eintrag ist auch vorhanden.
Wir nähern uns der Glaskugel... Etwas Code wäre nicht schlecht gewesen.
Falls du die Datei sofort nach dem Schreiben lesen möchtest (Mode 'r+', 'w+' oder 'a+') und das File-Objekt noch nicht geschlossen hast, dann musst du dich vor dem Lesen wieder zur Position der Zahl bewegen. (mit seek)
Hast du die Datei nur zum Schreiben, nur zum Lesen oder beides geöffnet? Wie sieht der Mist aus, den zu zurück bekommst?
Allgemeine Hilfe zu Dateioperationen findest du hier:
http://docs.python.org/lib/bltin-file-objects.html
http://docs.python.org/lib/built-in-fun ... t-in-funcs --> file
lg
Gerold
Zuletzt geändert von gerold am Mittwoch 8. Juni 2005, 09:25, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
In wiefern spuckt es nur Mist aus??? Ich kann mir vorstellen, das noch ein "\n" dranhängt...Corny hat geschrieben:Ich erstelle eine Datei und schreibe z.B. die Zahl 32 rein. Wie kann ich diese Zahl nun wieder auslesen? f.readline ergibt nur Mist, genauso f.read - die Datei wurde aber korrekt angelegt und der Eintrag ist auch vorhanden.
Dir ist natürlich klar, das die Zahl erstmal ein String ist, der mit z.B. int() wieder zur Zahl gemacht werden kann...
Schon klar dass ich dann erstmal einen string zurückbekommen werde, kein Problem. Aber selbst mit einer Zeichenfolge in der Datei bringt er mir nix brauchbares zurück.
bringt
Code: Alles auswählen
dat = "datei.txt"
datei = open(dat, 'w')
datei.write ("ftf")
print datei.readline()
Gehe ich das völlig falsch an oder steckt der Teufel im Detail?D:\Test>test.py
x☺é
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Zwischenzeitlich schließen und zum lesen öffnen, dann geht's:
Code: Alles auswählen
dat = "datei.txt"
datei = open(dat, 'w')
datei.write ("ftf")
datei.close()
datei = open(dat, "r" )
print datei.readline()
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
btw: vor einem sollte ein kommen, damit sichergestellt ist, das die Daten alle in die Datei geschrieben werden, bevor man den file-handle schließt.
mfg, querdenker
Code: Alles auswählen
fh.close()
Code: Alles auswählen
fh.flush()
mfg, querdenker
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Bist du sicher das das nötig ist??? Ich habe das bisher nie gemacht! Ich dachte .flush() wäre nur dazu da, wenn man sicher stellen will, das zu diesem Zeitpunkt die Daten geschrieben worden sind.
IMHO wird .flush() quasi automatisch mit .close() aufgeführt.
IMHO wird .flush() quasi automatisch mit .close() aufgeführt.
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
Ich bin da schon ein paar mal auf die Klappe gefallen, insbesondere, wenn der Rechner während des Script-Laufes noch andere Sachen nebenher macht. Da fehlten dann schon mal ein paar Einträge, wie sich beim debuggen des Scriptes herausgestellt hat.jens hat geschrieben:Bist du sicher das das nötig ist??? ...
...IMHO wird .flush() quasi automatisch mit .close() aufgeführt.
mfg, querdenker
Ein explizites `flush()` vor einem `close()` ist nicht notwendig! Da muss ein anderer Fehler vorgelegen haben.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hätt' mich auch gewundert, denn ich .flush()e praktisch nie und hatte keine Probleme.BlackJack hat geschrieben:Ein explizites `flush()` vor einem `close()` ist nicht notwendig!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice