Wie kann ich save alle Variablen der aktuellen python-session?
Ich wollen speichern Sie alle Variablen in meine aktuelle python-Umgebung. Es scheint eine Möglichkeit ist die Verwendung der 'Gurke' - Modul. Aber ich will nicht zu tun, dies aus 2 Gründen:
1) ich habe zu nennen, Gurke.dump() für jede variable
2) Wenn ich Sie abrufen möchten, mit den Variablen, die ich merken müssen die Reihenfolge, in der ich gespeichert, die Variablen, und führen Sie dann eine Gurke.load() zum abrufen von einzelnen Variablen.
Ich bin auf der Suche für einen Befehl, die würde speichern Sie die gesamte Sitzung, so dass, wenn ich laden Sie die gespeicherte Sitzung, alle meine Variablen werden wiederhergestellt. Ist das möglich?
Vielen Dank!
Gaurav
Edit: ich denke ich habe nichts dagegen Aufruf Gurke.dump() für jede variable, die ich speichern möchte, sondern die Erinnerung an die genaue Reihenfolge, in der die Variablen gespeichert wurden, scheint wie eine große Einschränkung. Dass ich vermeiden will.
InformationsquelleAutor user10 | 2010-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Regal Sie nicht merken, in welcher Reihenfolge die Objekte gebeizt werden, da
shelve
gibt Sie ein dictionary-ähnliches Objekt:Einzustellen, Ihre Arbeit:
Wiederherstellen:
Und hier dachte ich "Gurken" waren lustig! 🙂 en.wikipedia.org/wiki/Inherently_funny_word
ist es moeglich, die details der Speicherung der Variablen in einer separaten Funktion? Zum Beispiel, wenn Sie eine Schleife durch die Namen in der aktuellen local name space, die Sie übergeben können, die als ein argument, aber dann wie Sie passieren die globals? Haben Sie auch passieren die globals? wie in
save(dir(),globals())
und dann läuft dein code oben? Auch ist es möglich, einfach eine Funktion aufzurufen, abstract wiederherstellen?Ich weiß diese Antwort ist schon sehr alt, byt, wenn ich dies Tue, habe ich die folgende Fehlermeldung:
PicklingError: Can't pickle <built-in function raw_input>: it's not the same object as __builtin__.raw_input
ich habe nur 2 Variablen, die in meinem Arbeitsbereich. Irgendwelche Ideen auf, wie man dieses Problem lösen? Hat eine etwas bessere Möglichkeit zum speichern der aktuellen Sitzung kommen nach dieser Antwort?Ich habe das gleiche problem in Bezug auf die Nutzung der Regal, wie oben beschrieben. PicklingError: Can ' T pickle <type 'numpy.int32'>: es ist nicht das gleiche Objekt wie numpy.int32
InformationsquelleAutor unutbu
Nachdem saß hier und konnte nicht speichern Sie die
globals()
als ein Wörterbuch, entdeckte ich, können Sie Gurke, eine Sitzung mit der dill-Bibliothek.Dies kann geschehen, indem man:
Ich glaube nicht, dass dill speichert alle Variablen, zum Beispiel, wenn Sie ausführen, dill.dump_session() in einer Funktion Variablen, die lokal sind, dass die Funktion nicht gespeichert.
Das ist nur ein scope Problem, ich denke, Sie könnten fügen Sie einfach alle Ihre einheimischen() zu globals (), wenn Sie muss?
InformationsquelleAutor user2589273
Einen sehr einfachen Weg, die könnte Ihre Bedürfnisse zu befriedigen. Für mich, es Tat ziemlich gut:
Einfach, klicken Sie auf dieses Symbol in der Variablen-Explorer (auf der rechten Seite der Spinne):
Speichert alle Variablen in der *.spydata format
Das laden der Variablen oder Bilder etc.
InformationsquelleAutor shm2008
Hier ist eine Möglichkeit, das speichern der Spyder-workspace-Variablen mit den spyderlib Funktionen
Lassen Sie mich wissen, wenn es für Sie arbeitet.
David B-H
Das ist eine gute Idee. Ich dachte über Kreditaufnahme von spyder Arbeitsbereich für die gleiche Sache. Aber nicht herausfinden, wie. Allerdings habe ich nicht ganz verstehen, Ihren code. Könnten Sie mir bitte sagen, funktioniert das genau wie Spyder, dass es automatisch erfasst alle Variablen, oder ich muss zu geben Sie die Variablen, die ich verwenden möchten?
InformationsquelleAutor David BH
Was Sie zu tun versuchen ist, um den Ruhezustand Ihres Prozesses. Dies war diskutiert schon. Die Schlussfolgerung ist, dass es einige schwer zu lösende Probleme gibt es beim Versuch, dies zu tun. Zum Beispiel mit der Wiederherstellung öffnen Sie den Datei-Deskriptoren.
Ist es besser zu denken, über die Serialisierung/Deserialisierung-subsystem für Ihr Programm. Es ist nicht trivial, in vielen Fällen aber ist die weitaus bessere Lösung in der langfristigen Perspektive.
Obwohl, wenn ich habe übertrieben das problem. Sie können versuchen, die Gurke globalen Variablen dict. Verwenden
globals()
Zugriff auf das Wörterbuch. Da ist es varname-indiziert Sie müssen nicht die Mühe über die Reihenfolge.So, Gurke Wörterbuch Variablennamen -> var_value
Vielen Dank für deine Antwort!
InformationsquelleAutor nkrkv
Wenn Sie möchten, dass die akzeptierte Antwort abstrahierte Funktion, die Sie verwenden können:
bekommen/laden des workspace:
es funktionierte, wenn ich es lief. Ich gebe zu ich verstehe nicht
dir()
undglobals()
100%, so dass ich nicht sicher bin, ob es möglicherweise einige seltsame Einschränkung, aber bisher scheint es zu funktionieren. Kommentare sind willkommen 🙂nach etwas mehr Forschung, wenn Sie anrufen
save_workspace
wie ich vorgeschlagen mit globals undsave_workspace
ist in einer Funktion funktioniert es nicht wie erwartet, wenn Sie möchten, speichern Sie die veriables in einem lokalen Bereich. Für diese Verwendunglocals()
. Dies geschieht, weil globals nimmt die globals aus dem Modul, in dem die Funktion definiert wurde, nicht, von wo es aufgerufen wird, wäre meine Vermutung.InformationsquelleAutor Pinocchio
Können Sie speichern Sie es als text-Datei oder eine CVS-Datei. Menschen nutzen Spyder zum Beispiel zum speichern von Variablen, aber es hat ein bekanntes Problem: für bestimmte Daten-Typen, die es nicht importieren nach unten in die Straße.
InformationsquelleAutor Navid Farhoudi