Wie speichere ich eine interaktive Python-Sitzung?
Finde ich mich Häufig mit Python-interpreter, um die Arbeit mit den Datenbanken, Dateien, etc-im Grunde eine Menge von manuellen Formatierung von semi-strukturierten Daten. Ich nicht richtig speichern und Aufräumen der nutzbits so oft wie ich gerne möchte. Gibt es eine Möglichkeit, meine Eingabe in der shell (db-verbindungen, Variablen, Zuordnungen, wenig Schleifen und die bits der Logik) -- die Geschichte von der interaktiven Sitzung? Wenn ich so etwas wie script
ich bekomme zu viel stdout Lärm. Ich weiß nicht wirklich brauchen, um pickle alle Objekte-aber wenn es eine Lösung gibt, die das tut, wäre es OK. Idealerweise würde ich nur noch ein Skript, das lief als die, die ich interaktiv erstellt, und ich könnte Sie einfach löschen Sie die bits die ich nicht brauche. Gibt es ein Paket, das dies tut, oder eine DIY-Methode?
UPDATE: ich bin wirklich erstaunt über die Qualität und Nützlichkeit dieser Pakete. Für diejenigen mit einem ähnlichen Jucken:
- IPython -- sollten Sie verwenden diese für Alter, Art, was ich im Sinn hatte,
- reinteract -- sehr beeindruckend, ich will lernen, mehr über die Visualisierungs-und dies scheint, wie es Glanz gibt. Die Art von einem gtk/gnome-desktop-app macht, dass inline-Grafiken. Stellen Sie sich ein hybrid-Schale + graphing calculator + mini-Sonnenfinsternis. Source-distribution hier: http://www.reinteract.org/trac/wiki/GettingIt . Gebaut gut auf Ubuntu, integriert sich in den gnome-desktop, Windows-und Mac-Installer zu.
- bpython -- extrem cool, viele nette features, AutoVervollständigen(!), rewind einem Tastendruck speichern, um die Datei, Einzug, gut gemacht. Python-source-distribution, zog ein paar Abhängigkeiten von sourceforge.
Ich bin konvertiert, diese wirklich zu füllen eine Notwendigkeit, zwischen interpreter und editor.
InformationsquelleAutor der Frage unmounted | 2009-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
IPython ist sehr nützlich, wenn Sie, wie mithilfe von interaktiven Sitzungen. Zum Beispiel für Ihren Anwendungsfall gibt es die
%
Magischer Befehlgeben Sie einfach%save my_useful_session 10-20 23
zu speichern, Eingabe-Linien 10 bis 20 und 23 bismy_useful_session.py
(um dabei zu helfen, jede Zeile vorangestellt ist seine Nummer).Darüber hinaus die Dokumentation besagt:
Diese können zum Beispiel Bezug zu älteren sessions, wie
Blick auf die videos der Präsentation auf die Seiteum einen schnellen überblick über die Funktionen.
InformationsquelleAutor der Antwort Ants Aasma
http://www.andrewhjon.es/save-interactive-python-session-history
InformationsquelleAutor der Antwort Roberto Z
Es ist ein Weges zu tun. Speichern Sie die Datei im
~/.pystartup
...und dann setzen Sie die Umgebungsvariable
PYTHONSTARTUP
in der shell (z.B. in~/.bashrc
):Können Sie auch hinzufügen, um autocomplete kostenlos:
Bitte beachten Sie, dass dies funktioniert nur auf *nix-Systemen. Als readline ist nur in Unix-Plattform.
InformationsquelleAutor der Antwort Nadia Alramli
Wenn Sie IPython können Sie in einer Datei speichern alle Ihre vorherigen Befehle mit der magic-Funktion %Geschichte mit der -f parameter, p ist.e:
InformationsquelleAutor der Antwort nachouve
Nach der Installation Ipythonund die Eröffnung eines Ipython-Sitzung mit dem Befehl:
aus der Befehlszeile, führen Sie einfach die folgenden Ipython 'magic' - Befehl zu protokollieren automatisch Ihre gesamte Ipython-Sitzung:
Diese erstellen einen eindeutigen Namen .py-Datei und speichern Sie Ihre Sitzung für eine spätere Verwendung als Ipython eine interaktive Sitzung oder für die Verwendung im Skript(s) Ihrer Wahl.
InformationsquelleAutor der Antwort webappzero
Auch, reinteract gibt Ihnen eine notebook-ähnliche Oberfläche, um eine Python-session.
InformationsquelleAutor der Antwort Ned Batchelder
Zusätzlich zu IPython, einem ähnlichen Dienstprogramm bpython hat ein "speichern Sie den code, den Sie eingegeben haben, zu einer Datei" Funktion
InformationsquelleAutor der Antwort dbr
Ich hatte zu kämpfen, um eine Antwort zu finden, war ich sehr neu in iPython-Umgebung.
Diese arbeiten
Wenn Ihr iPython-Sitzung sieht wie folgt aus
Den Sie speichern wollen Linien von 1 bis 135 dann auf der gleichen ipython-Sitzung mit diesem Befehl
Dies wird speichern Sie Ihre python-Anweisungen in test.py Datei im aktuellen Verzeichnis ( in dem Sie initiiert die ipython).
InformationsquelleAutor der Antwort Somum
Es ist %Geschichte Magie für drucken und speichern der Eingangs-Geschichte (und Optional die Ausgabe).
Zum speichern Ihrer aktuellen Sitzung in eine Datei mit dem Namen
my_history.py
:Geschichte IPython speichert die Befehle, die Sie eingeben, und die Ergebnisse, die Sie produziert. Sie können ganz einfach gehen durch die vorherigen Befehle mit den up - und down-Pfeiltasten, oder Zugriff auf Ihre Geschichte, die in anspruchsvoller Weise.
Können Sie die %Geschichte Magische Funktion zu prüfen Vergangenheit-Eingang und-Ausgang. Eingang Geschichte aus vorherigen Sitzungen gespeichert in einer Datenbank, und IPython kann so konfiguriert werden, speichern Ausgang der Geschichte.
Einige andere Magie-Funktionen können Sie Ihre Eingabe Geschichte, einschließlich %edit, %erneut, %erinnern, %makro %sparen und %pastebin. Sie können verwenden Sie ein standard-format zu beziehen, Zeilen:
Dies wird nehmen Sie die Linie 3 und die Zeilen 18 bis 20 aus der aktuellen Sitzung und die Zeilen 1-5 aus der vorherigen Sitzung.
Siehe %Geschichte? für den Docstring und mehr Beispiele.
Auch, seien Sie sicher und erkunden Sie die Möglichkeiten von %store magic für leichte Persistenz von Variablen in IPython.
Zu autorestore gespeicherten Variablen auf Start, geben Sie
c.StoreMagic.autorestore = True
im ipython_config.py.InformationsquelleAutor der Antwort Alexander
Nur darum, einen anderen vorschlagen in der Schüssel:
Spyder
Es hat Verlaufsprotokoll und Variable explorer. Wenn Sie gearbeitet haben, mit MatLab, dann siehst du die ähnlichkeiten.
InformationsquelleAutor der Antwort Norfeldt
So weit wie Linux geht, kann man
script
Befehl zur Aufzeichnung der gesamten Sitzung. Es ist Teilutil-linux
- Paket, so sollte auf den meisten Linux-Systemen . Sie können erstellen und alias oder eine Funktion aufrufen, werdenscript -c python
und gespeichert werden, um einetypescript
- Datei. Zum Beispiel, hier ist eine Neuauflage einer solchen Datei.Kleine Nachteil hier ist, dass die
script
nimmt alles , sogar line-feeds, wenn Sie schlagen', etc. So möchten Sie vielleicht zu verwendencol
zu bereinigen, die Ausgabe (siehe dieser post auf Unix&Linux Stackexchange) .InformationsquelleAutor der Antwort Sergiy Kolodyazhnyy
es ist eine weitere option --- pyslice.
in der "wxpython 2.8 docs demos and tools", dort ist ein open-source-Programm namens "pyslices".
können Sie es verwenden, wie ein editor, und es unterstützt auch die Verwendung von wie eine Konsole ---- Ausführung jeder line wie ein interaktiver interpreter mit sofortiger echo.
natürlich, alle Blöcke des codes und die Ergebnisse von jedem block aufgezeichnet wird und in eine txt-Datei automatisch.
die Resultate werden direkt hinter den entsprechenden code-block. sehr bequem.
InformationsquelleAutor der Antwort fandyst
Den
%history
Befehl ist genial, aber leider wird es nicht zulassen, speichern Sie die Dinge, die waren %paste 'd in der sesh. Zu tun, dass ich denke, Sie haben zu tun%logstart
am Anfang (obwohl ich noch nicht bestätigt, das funktioniert).Was ich wie zu tun ist,
%history -o -n -p -f filename.txt
speichern der Ausgabe, Linie zahlen, und '>>>' vor jeder Eingabe (o, n, und p-Optionen). Siehe die Dokumentation für %Geschichte hier.
InformationsquelleAutor der Antwort wordsforthewise
Einige Kommentare wurden gefragt, wie Sie alle die IPython-Eingänge auf einmal. Für %sparen Magie in IPython, können Sie alle Befehle, die programmgesteuert, wie unten gezeigt, um zu vermeiden, die Fenster mit der Meldung und auch um zu vermeiden, die Angabe der zahlen einzugeben.
currentLine = len(In)-1
%save -f my_session 1-$currentLine
Den
-f
option wird verwendet, um zu zwingen Datei ersetzen und dielen(IN)-1
zeigt die aktuelle Eingabe-prompt in IPython, so dass Sie sparen sich die gesamte Sitzung programmatisch.InformationsquelleAutor der Antwort E. F. Haghish
Für diejenigen, die sich mit
spacemacs
undipython
kommt mitpython-layer
speichern magic schafft eine Menge von unerwünschten Ausgang, wegen der ständigen auto-completion " - Befehl arbeiten im hintergrund wie:Um dies zu vermeiden, speichern Sie einfach die ipython-Puffer, wie Sie normalerweise speichern andere:
spc f s
InformationsquelleAutor der Antwort Kaan E.
Wenn Sie bpythonalle Ihre Befehl-Verlauf wird standardmäßig gespeichert
~/.pythonhist
.Speichern die Befehle für später reusage Sie können kopieren Sie Sie in einem python-Skript-Datei:
Dann Bearbeiten Sie diese Datei, um es zu säubern und legen Sie es unter Python-Pfad (globalen oder virtuellen Umgebung-Website-Pakete, Aktuelles Verzeichnis, zu erwähnen *.pth, oder auf eine andere Weise).
Enthalten die Befehle in der shell, nur importieren Sie Sie aus der gespeicherten Datei:
InformationsquelleAutor der Antwort Aidas Bendoraitis
Ich würde gerne vorschlagen einen anderen Weg zu pflegen python-session durch tmux auf linux. Sie führen tmux, schließen Sie sich selbst auf die Sitzung, die Sie geöffnet (wenn nicht angefügt, nach dem öffnen direkt). ausführen von python und tun, was Sie tun. dann löst Sie sich aus der Sitzung. trennen von einer tmux-session nicht die Sitzung schließen. die session bleibt offen.
Vorteile dieser Methode:
Sie können anfügen an diese Sitzung von einem anderen Gerät aus (in Fall können Sie ssh Ihrem pc)
Nachteile dieser Methode:
diese Methode ist nicht auf die Ressourcen, die durch das geöffnete python-Sitzung, bis Sie tatsächlich existieren, den python-interpreter.
InformationsquelleAutor der Antwort Myonaiz