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?

458voto

Ants Aasma Punkte 50286

IPython ist äußerst nützlich, wenn Sie interaktive Sitzungen nutzen möchten. Für Ihren Anwendungsfall gibt es zum Beispiel le site %save magischer Befehl geben Sie einfach ein %save my_useful_session 10-20 23 um die Eingabezeilen 10 bis 20 und 23 bis my_useful_session.py (um dies zu erleichtern, wird jeder Zeile eine Nummer vorangestellt).

Außerdem heißt es in der Dokumentation:

Diese Funktion verwendet die gleiche Syntax wie %Geschichte für Eingabebereiche und speichert die Zeilen dann unter dem von Ihnen angegebenen Dateinamen.

Dies ermöglicht es zum Beispiel, auf ältere Sitzungen zu verweisen, wie

%save current_session ~0/
%save previous_session ~1/

Regardez die Videos auf der Präsentationsseite um einen schnellen Überblick über die Funktionen zu erhalten.

215voto

Roberto Z Punkte 1997

Von der Website von Andrew Jones ( archiviert ) :

import readline
readline.write_history_file('/home/ahj/history')

101voto

Nadia Alramli Punkte 105256

Es gibt eine chemin um es zu tun. Speichern Sie die Datei in ~/.pystartup ...

# Add auto-completion and a stored history file of commands to your Python
# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
# bound to the Esc key by default (you can change it - see readline docs).
#
# Store the file in ~/.pystartup, and set an environment variable to point
# to it:  "export PYTHONSTARTUP=/home/user/.pystartup" in bash.
#
# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the
# full path to your home directory.

import atexit
import os
import readline
import rlcompleter

historyPath = os.path.expanduser("~/.pyhistory")

def save_history(historyPath=historyPath):
    import readline
    readline.write_history_file(historyPath)

if os.path.exists(historyPath):
    readline.read_history_file(historyPath)

atexit.register(save_history)
del os, atexit, readline, rlcompleter, save_history, historyPath

und setzen Sie dann die Umgebungsvariable PYTHONSTARTUP in Ihrer Shell (z. B. in ~/.bashrc ) :

export PYTHONSTARTUP=$HOME/.pystartup

Sie können dies auch hinzufügen, um die automatische Vervollständigung kostenlos zu erhalten:

readline.parse_and_bind('tab: complete')

Bitte beachten Sie, dass dies nur auf *nix-Systemen funktioniert. Da readline nur auf Unix-Plattformen verfügbar ist.

79voto

nachouve Punkte 1051

Wenn Sie Folgendes verwenden IPython können Sie alle bisherigen Befehle in einer Datei speichern, indem Sie die magische Funktion %Geschichte mit dem -f Parameter, p.e:

%history -f /tmp/history.py

23voto

webappzero Punkte 311

Nach der Installation von Ipython und öffnen Sie eine Ipython-Sitzung, indem Sie den Befehl ausführen:

ipython

von Ihrer Befehlszeile aus, führen Sie einfach den folgenden Ipython-Befehl "magic" aus, um Ihre gesamte Ipython-Sitzung automatisch zu protokollieren:

%logstart

Dadurch wird eine eindeutig benannte .py-Datei erstellt und Ihre Sitzung zur späteren Verwendung als interaktive Ipython-Sitzung oder zur Verwendung in einem Skript Ihrer Wahl gespeichert.

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