dict() to file

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
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

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)
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

GEIL! Und so ne schnelle Antwort... Geht auch als "ge-freezte" .exe!
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

droptix hat geschrieben:GEIL!
Genau! Hat schon seine Gründe, warum ich nur noch rechenintensive Teile in C++ schreibe und den Rest in Python.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten