Python 3.0: Dictionary mit pickle in datei (als String)

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
fredistdurstig
User
Beiträge: 13
Registriert: Sonntag 18. Januar 2009, 20:08

Habe mal eine klitzekleine Anfänger-Frage:
Ich versuche gerade ein paar Python 2.5-Skripte auf 3.0 umzustellen, und habe gerade entdeckt, dass sich die Datei-Operationen im Vergleich zur 2.5 geändert haben.

Ich möchte ein Dictionary per pickle.dump in eine Datei schreiben. Wenn ich es binär schreiben möchte, ist das kein Problem:

Code: Alles auswählen

import pickle
dic = {"Müller":21342, "Meier":1245234}
f=open("dic.dat", "wb")
pickle.dump(dic, f)
f.close()
Ich würde mein Dictionary aber lieber in lesbarer Form als Text stream abspeichern und nicht als Byte-Stream, so wie es Python 2.5 standardmässig war. Dort konnte ich das "b" beim file-open einfach weglassen, aber bei Py3 bekomme ich dann die Exception "TypeError: can't write bytes to text stream". Kann ich das Dic auch irgendwie als text stream picklen?
Danke im Vorraus!
BlackJack

@fredistdurstig: Das stimmt so nicht! Auch unter 2.5 darf man `pickle`-Dateien nicht ohne das 'b' speichern. Es gibt zwar (leider) keine Fehlermeldung, aber ohne das 'b' kann man die Dateien sonst unter Umständen nicht mehr auf anderen Plattformen lesen. Also `pickle`-Dateien bitte *immer* im Binärmodus lesen und schreiben.

Ob das Binärformat nur aus für Menschen lesbaren Bytes im ASCII-Bereich oder kompakter gespeichert wird, hängt vom Protokoll ab.
Antworten