Ich benutze häufig den Python-Interpreter, um mit Datenbanken, Dateien usw. zu arbeiten - im Grunde genommen viele manuelle Formatierungen von halbstrukturierten Daten. Ich speichere und bereinige die nützlichen Teile nicht so oft, wie ich möchte. Gibt es eine Möglichkeit, meine Eingaben in der Shell zu speichern (Datenbankverbindungen, Variablenzuweisungen, wenig für Schleifen und Logikbits) - eine Geschichte der interaktiven Sitzung? Wenn ich so etwas wie benutze, script
bekomme ich zu viel Standardgeräusch. Ich muss nicht wirklich alle Objekte einlegen - aber wenn es eine Lösung gibt, die das macht, wäre es in Ordnung. Im Idealfall bleibt mir nur ein Skript übrig, das so ausgeführt wird, wie ich es interaktiv erstellt habe, und ich kann einfach die Bits löschen, die ich nicht benötige. Gibt es ein Paket, das dies tut, oder einen DIY-Ansatz?
UPDATE : Ich bin wirklich erstaunt über die Qualität und Nützlichkeit dieser Pakete. Für diejenigen mit einem ähnlichen Juckreiz:
- IPython - sollte dies schon seit Ewigkeiten verwenden, so wie ich es mir vorgestellt hatte
- Reinteract - sehr beeindruckend, ich möchte mehr über Visualisierung erfahren und dies scheint dort zu leuchten. Eine Art GTK / Gnome-Desktop-App, die Diagramme inline rendert. Stellen Sie sich eine Hybrid-Shell + Grafikrechner + Mini-Eclipse vor. Quellenverteilung hier: http://www.reinteract.org/trac/wiki/GettingIt . Es wurde unter Ubuntu entwickelt und lässt sich auch in Gnome Desktop-, Windows- und Mac-Installationsprogramme integrieren.
- bpython - extrem cool, viele nette Funktionen, Autocomplete (!), Rücklauf, ein Tastendruck in Datei speichern, Einrückung, gut gemacht. Python-Quelldistribution, zog einige Abhängigkeiten von SourceForge.
Ich bin konvertiert, diese erfüllen wirklich ein Bedürfnis zwischen Dolmetscher und Redakteur.
quelle
In[48]
). Sosave filename 1-48
würde Ihre ganze Sitzung speichern.%load my_useful_session
http://www.andrewhjon.es/save-interactive-python-session-history
quelle
Es gibt einen Weg , dies zu tun. Speichern Sie die Datei in
~/.pystartup
...und setzen Sie dann die Umgebungsvariable
PYTHONSTARTUP
in Ihrer Shell (z. B. in~/.bashrc
):Sie können dies auch hinzufügen, um die automatische Vervollständigung kostenlos zu erhalten:
Bitte beachten Sie, dass dies nur auf * nix-Systemen funktioniert. Da readline nur in der Unix-Plattform verfügbar ist.
quelle
readline.parse_and_bind('tab: complete')
funktioniert, wenn Sie MacPorts Python verwenden.Wenn Sie IPython verwenden , können Sie alle Ihre vorherigen Befehle mithilfe der magischen Funktion % history mit dem Parameter -f in einer Datei speichern : pe:
quelle
save
Magie. Dies war sehr hilfreich%history -g -f full_history.py
diese Option , um den Verlauf aller Sitzungen abzurufen, nicht nur der aktuellen. Siehe auch: Dokumentation für% history .Nach der Installation von Ipython und dem Öffnen einer Ipython-Sitzung durch Ausführen des folgenden Befehls:
Führen Sie in Ihrer Befehlszeile einfach den folgenden Ipython-Befehl 'magic' aus, um Ihre gesamte Ipython-Sitzung automatisch zu protokollieren:
Dadurch wird eine eindeutig benannte .py-Datei erstellt und Ihre Sitzung zur späteren Verwendung als interaktive Ipython-Sitzung oder zur Verwendung in den Skripten Ihrer Wahl gespeichert.
quelle
Durch die erneute Interaktion erhalten Sie außerdem eine Notebook-ähnliche Oberfläche für eine Python-Sitzung.
quelle
reinteract
wird jetzt durch das IPython Notebook und QtConsole ersetzt.Zusätzlich zu IPython verfügt ein ähnliches Dienstprogramm, bpython, über die Funktion "Speichern Sie den von Ihnen eingegebenen Code in einer Datei"
quelle
Ich musste kämpfen, um eine Antwort zu finden. Ich war sehr neu in der iPython-Umgebung.
Das wird funktionieren
Wenn Ihre iPython-Sitzung so aussieht
Sie möchten Zeilen von 1 bis 135 speichern und dann in derselben Ipython-Sitzung diesen Befehl verwenden
Dadurch werden alle Ihre Python-Anweisungen in der Datei test.py in Ihrem aktuellen Verzeichnis gespeichert (in dem Sie ipython initiiert haben).
quelle
Es gibt% history magic zum Drucken und Speichern des Eingabeverlaufs (und optional der Ausgabe).
So speichern Sie Ihre aktuelle Sitzung in einer Datei mit dem Namen
my_history.py
:Verlauf IPython speichert sowohl die von Ihnen eingegebenen Befehle als auch die daraus resultierenden Ergebnisse. Sie können frühere Befehle einfach mit den Aufwärts- und Abwärtspfeiltasten durchgehen oder auf komplexere Weise auf Ihren Verlauf zugreifen.
Mit der magischen Funktion% history können Sie frühere Ein- und Ausgaben untersuchen. Der Eingabeverlauf früherer Sitzungen wird in einer Datenbank gespeichert, und IPython kann so konfiguriert werden, dass der Ausgabeverlauf gespeichert wird.
Verschiedene andere magische Funktionen können Ihren Eingabeverlauf verwenden, darunter% edit,% rerun,% Recall,% macro,% save und% pastebin. Sie können ein Standardformat verwenden, um auf Zeilen zu verweisen:
Dies übernimmt die Zeilen 3 und 18 bis 20 aus der aktuellen Sitzung und die Zeilen 1 bis 5 aus der vorherigen Sitzung.
Siehe% history? für den Docstring und weitere Beispiele.
Informieren Sie sich auch über die Funktionen von % store magic für die einfache Persistenz von Variablen in IPython.
Geben Sie
c.StoreMagic.autorestore = True
in ipython_config.py an, um gespeicherte Variablen beim Start automatisch wiederherzustellen.quelle
c.HistoryManager.db_log_output
in der Konfigurationsdatei erfolgen.Geben Sie einfach einen weiteren Vorschlag in die Schüssel: Spyder
Es verfügt über ein Verlaufsprotokoll und einen Variablen-Explorer . Wenn Sie mit MatLab gearbeitet haben, werden Sie die Ähnlichkeiten sehen.
quelle
Unter Linux kann man den
script
Befehl verwenden, um die gesamte Sitzung aufzuzeichnen. Es ist Teil desutil-linux
Pakets und sollte daher auf den meisten Linux-Systemen vorhanden sein. Sie können einen Alias oder eine Funktion erstellen, die aufgerufenscript -c python
und in einertypescript
Datei gespeichert werden. Hier ist zum Beispiel ein Nachdruck einer solchen Datei.Ein kleiner Nachteil hierbei ist, dass
script
alles aufgezeichnet wird, auch Zeilenvorschübe, wenn Sie auf Backspaces usw. stoßen . Daher möchten Sie möglicherweisecol
die Ausgabe bereinigen (siehe diesen Beitrag zu Unix & Linux Stackexchange ).quelle
Der
%history
Befehl ist fantastisch, aber leider können Sie damit keine Dinge speichern, die% paste in den Sesh eingefügt wurden. Um das zu tun, denke ich, müssen Sie%logstart
am Anfang tun (obwohl ich nicht bestätigt habe, dass dies funktioniert).Was ich gerne mache ist
%history -o -n -p -f filename.txt
Dadurch werden die Ausgabe, die Zeilennummern und '>>>' vor jeder Eingabe gespeichert (Optionen o, n und p). % Verlauf finden Sie in den Dokumenten hier .
quelle
Es gibt noch eine andere Option - Pyslice. In den "wxpython 2.8 docs-Demos und -Tools" gibt es ein Open-Source-Programm namens "pyslices".
Sie können es wie einen Editor verwenden und es unterstützt auch die Verwendung wie eine Konsole ---- jede Zeile wie einen interaktiven Interpreter mit sofortigem Echo ausführen.
Natürlich werden alle Codeblöcke und Ergebnisse jedes Blocks automatisch in einer txt-Datei aufgezeichnet.
Die Ergebnisse werden direkt hinter dem entsprechenden Codeblock protokolliert. sehr angenehm.
quelle
Wenn Sie bpython verwenden , wird der gesamte Befehlsverlauf standardmäßig in gespeichert
~/.pythonhist
.Um die Befehle für eine spätere Wiederverwendung zu speichern, können Sie sie in eine Python-Skriptdatei kopieren:
Bearbeiten Sie dann diese Datei, um sie zu bereinigen, und fügen Sie sie unter den Python-Pfad ein (Site-Pakete der globalen oder virtuellen Umgebung, aktuelles Verzeichnis, Erwähnung in * .pth oder auf andere Weise).
Um die Befehle in Ihre Shell aufzunehmen, importieren Sie sie einfach aus der gespeicherten Datei:
quelle
In einigen Kommentaren wurde gefragt, wie alle IPython-Eingaben gleichzeitig gespeichert werden sollen. Für% save magic in IPython können Sie alle Befehle wie unten gezeigt programmgesteuert speichern, um die Eingabeaufforderung und die Angabe der Eingabenummern zu vermeiden. currentLine = len (In) -1% save -f my_session 1- $ currentLine
Die
-f
Option wird zum Erzwingen des Ersetzens von Dateien verwendet undlen(IN)-1
zeigt die aktuelle Eingabeaufforderung in IPython an, sodass Sie die gesamte Sitzung programmgesteuert speichern können.quelle
Für diejenigen mit
spacemacs
, undipython
das kommt mitpython-layer
, speichert Magie viele unerwünschten Ausgabe, wegen des konstant im Hintergrund Auto-Vervollständigung Befehls erstellt Arbeiten wie zum Beispiel:Um dies zu vermeiden, speichern Sie einfach den Ipython-Puffer wie gewohnt:
spc f s
quelle
Ich möchte einen anderen Weg vorschlagen, um die Python-Sitzung über tmux unter Linux aufrechtzuerhalten. Wenn Sie tmux ausführen, hängen Sie sich an die Sitzung an, die Sie geöffnet haben (falls nicht direkt nach dem Öffnen). Führen Sie Python aus und tun Sie, was immer Sie darauf tun. dann von der Sitzung trennen. Durch das Trennen von einer tmux-Sitzung wird die Sitzung nicht geschlossen. Die Sitzung bleibt offen.
Vorteile dieser Methode: Sie können von jedem anderen Gerät aus eine Verbindung zu dieser Sitzung herstellen (falls Sie Ihren PC ssh können).
Nachteile dieser Methode: Diese Methode gibt die von der geöffneten Python-Sitzung verwendeten Ressourcen erst dann frei, wenn Sie tatsächlich über den Python-Interpreter verfügen.
quelle
So speichern Sie Ein- und Ausgaben auf XUbuntu :
Terminal
in die obere Menüleiste und suchen Siesave contents
in der Dropdown-ListeIch finde, dass dies die Ein- und Ausgabe speichert und bis zum Öffnen des Terminals zurückreicht. Dies ist nicht ipython-spezifisch und funktioniert mit SSH-Sitzungen oder anderen Aufgaben, die über das Terminalfenster ausgeführt werden.
quelle