Seite 1 von 1

komisches Verhalten von f.write und f.tell

Verfasst: Mittwoch 21. Februar 2007, 19:08
von rayo
Hi

Irgendwie muss ich glaubs einen saublöden Fehler machen, aber ich kann mir folgendes Verhalten einfach nicht erklären:

Code: Alles auswählen

print self.data.tell(), len(tmp), self.data.tell()+len(tmp),
self.data.write(tmp)
print self.data.tell()
self.data ist ein Fileobjekt und tmp ein Datenstring

Die Ausgabe sieht so aus:

Code: Alles auswählen

0 634 634 658
Also zuerst ist der Filezeiger auf Byte 0
Die Länge von tmp ist 634 und nach dem schreiben sollte der Dateizeiger auf das Byte 634 zeigen.
Jedoch gibt tell nacher 658 aus.

Wie kann ich mir das erklären? Woher kommen die 24 Bytes mehr?

Gruss

Verfasst: Mittwoch 21. Februar 2007, 19:16
von sunmountain
NEWLINE und CARRIGE RETURN ?
Enthält Dein String \n ?
Bei Linux/UNIX/MacOS hieße das 24 Zeilen, bei DOS/Win wären
es somit 12 Zeilen

Verfasst: Mittwoch 21. Februar 2007, 19:20
von rayo
Ach Danke sunmountain

Wie konnte ich das nur vergessen, mit 'wb' funktioniert es natürlich wie gewollt. Und schon wieder einen ganzen Nachmittag für nichts ;)

*kopf an die wand hau*

Gruss Rayo

Verfasst: Mittwoch 21. Februar 2007, 19:52
von EnTeQuAk
jedenfalls wirst du es nun erstmal eine Weile lang beachten ;)


MfG EnTeQuAk