469 Stimmen

Wie speichert man eine interaktive Python-Sitzung?

Ich verwende häufig den Python-Interpreter, um mit Datenbanken, Dateien usw. zu arbeiten - im Grunde eine Menge manueller Formatierung halbstrukturierter Daten. Ich speichere und bereinige die nützlichen Teile nicht so oft, wie ich es gerne hätte. Gibt es eine Möglichkeit, meine Eingaben in die Shell zu speichern (Datenbankverbindungen, Variablenzuweisungen, kleine for-Schleifen und logische Teile) - einen Verlauf der interaktiven Sitzung? Wenn ich etwas verwende wie script Ich bekomme zu viel stdout-Rauschen. Ich brauche nicht wirklich, um alle Objekte zu beizen - obwohl, wenn es eine Lösung, die das tut, wäre es OK. Im Idealfall hätte ich nur ein Skript, das so läuft wie das, das ich interaktiv erstellt habe, und ich könnte einfach die Teile löschen, die ich nicht brauche. Gibt es ein Paket, das dies ermöglicht, oder einen DIY-Ansatz?

14voto

Ned Batchelder Punkte 342778

Auch, neu interagieren bietet Ihnen eine notizbuchähnliche Schnittstelle zu einer Python-Sitzung.

11voto

dbr Punkte 158949

Zusätzlich zu IPython gibt es ein ähnliches Dienstprogramm bpython hat eine Funktion zum Speichern des eingegebenen Codes in einer Datei

11voto

Somum Punkte 2162

Ich hatte zu kämpfen, um eine Antwort zu finden, ich war sehr neu in iPython Umgebung.

Dies wird funktionieren

Wenn Ihre iPython-Sitzung wie folgt aussieht

In [1] : import numpy as np
....
In [135]: counter=collections.Counter(mapusercluster[3])
In [136]: counter
Out[136]: Counter({2: 700, 0: 351, 1: 233})

Wenn Sie die Zeilen von 1 bis 135 speichern wollen, verwenden Sie in der gleichen ipython-Sitzung folgenden Befehl

In [137]: %save test.py 1-135

Dies speichert alle Ihre Python-Anweisungen in der Datei test.py in Ihrem aktuellen Verzeichnis (wo Sie ipython gestartet haben).

4voto

Alexander Punkte 96032

Es gibt die %history-Magie zum Drucken und Speichern des Eingabeverlaufs (und optional der Ausgabe).

So speichern Sie Ihre aktuelle Sitzung in einer Datei namens my_history.py :

>>> %hist -f my_history.py

Verlauf IPython speichert sowohl die von Ihnen eingegebenen Befehle als auch die Ergebnisse. Sie können frühere Befehle mit den Pfeiltasten nach oben und unten durchgehen oder auf komplexere Weise auf Ihren Verlauf zugreifen.

Sie können die magische Funktion %history verwenden, um vergangene Eingaben und Ausgaben zu untersuchen. Der Eingabeverlauf früherer Sitzungen wird in einer Datenbank gespeichert, und IPython kann so konfiguriert werden, dass der Ausgabeverlauf gespeichert wird.

Mehrere 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:

%pastebin 3 18-20 ~1/1-5

Dabei werden Zeile 3 und die Zeilen 18 bis 20 aus der aktuellen Sitzung und die Zeilen 1-5 aus der vorherigen Sitzung übernommen.

Siehe %history? für den Docstring und weitere Beispiele.

Informieren Sie sich auch über die Möglichkeiten von %Speicherzauber für die leichtgewichtige Persistenz von Variablen in IPython.

Speichert Variablen, Aliase und Makros in der Datenbank von IPython.

d = {'a': 1, 'b': 2}
%store d  # stores the variable
del d

%store -r d  # Refresh the variable from IPython's database.
>>> d
{'a': 1, 'b': 2}

Um gespeicherte Variablen beim Starten automatisch zu speichern, geben Sie c.StoreMagic.autorestore = True in ipython_config.py.

4voto

wordsforthewise Punkte 10875

El %history Befehl ist großartig, aber leider kann man damit keine Dinge speichern, die mit %paste 'd in den Sesh eingefügt wurden. Um das zu tun, muss man, glaube ich, Folgendes tun %logstart zu Beginn (Ich habe allerdings nicht bestätigt, dass dies funktioniert).

Was ich gerne mache, ist

%history -o -n -p -f filename.txt

die die Ausgabe, Zeilennummern und '>>>' vor jeder Eingabe speichert (Optionen o, n und p). Siehe die Dokumentationen für %history aquí .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X