komisches Verhalten von f.write und f.tell

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
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

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
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

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
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

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
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

jedenfalls wirst du es nun erstmal eine Weile lang beachten ;)


MfG EnTeQuAk
Antworten