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?
Antworten
Zu viele Anzeigen?Auch, neu interagieren bietet Ihnen eine notizbuchähnliche Schnittstelle zu einer Python-Sitzung.
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).
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.
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í .