Seite 1 von 1

dict() to file

Verfasst: Samstag 24. Dezember 2005, 01:33
von droptix
Ich erstelle ein Dictionary und würde es mir gerne jederzeit wieder verfügbar machen, auch wenn ich mein Python-Programm geschlossen habe. Also möchte ich es in eine Datei schreiben.

Wie macht man das am besten?

Zuerst dachte ich an eine Liste von Befehlen, die mir das Dictionary erstellten. Diese Liste von Befehlen kann man mit einem \n Linebreak "zusammenschweißen": "\n".join(myCommandList) und in eine Datei schreiben. Über execfile("myfile") kann man das Skript in der Datei ausführen und somit das Dictionary wieder reproduzieren.

Klappt, aber das ist irgendwie unelegant. Hier ein kleines Bsp.:

Code: Alles auswählen

cmd = [
          "n = {'d': {}, 'f': []}",
          "n['f'].append('test')",
          "print n"
      ]
fname = "testfile"
f = file(fname, "w")
f.writelines("\n".join(cmd))
f.close()
execfile(fname)

Verfasst: Samstag 24. Dezember 2005, 01:37
von Joghurt
http://docs.python.org/lib/module-pickle.html

Code: Alles auswählen

import cPickle
n = {'d':{}, 'f':[]}
n['f'].append('test')
cPickle.dump(n,open("testfile","w"))
del n
n = cPickle.load(open("testfile"))
print n

GEIL!

Verfasst: Samstag 24. Dezember 2005, 01:49
von droptix
GEIL! Und so ne schnelle Antwort... Geht auch als "ge-freezte" .exe!

Re: GEIL!

Verfasst: Samstag 24. Dezember 2005, 01:56
von Joghurt
droptix hat geschrieben:GEIL!
Genau! Hat schon seine Gründe, warum ich nur noch rechenintensive Teile in C++ schreibe und den Rest in Python.

Re: GEIL!

Verfasst: Samstag 24. Dezember 2005, 11:34
von jens
Joghurt hat geschrieben:Hat schon seine Gründe, warum ich nur noch rechenintensive Teile in C++ schreibe und den Rest in Python.
Ist wohl gängige Praxis... Allerdings bin ich bisher noch nicht auf wirkliche Geschwindigkeitsprobleme gestoßen!