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?

3voto

Norfeldt Punkte 6202

Ich lege nur einen weiteren Vorschlag in die Schüssel: Spyder

enter image description here

Sie hat Logbuch Geschichte y Variablen-Explorer . Wenn Sie mit MatLab gearbeitet haben, werden Sie die Ähnlichkeiten erkennen.

2voto

Was Linux betrifft, so kann man mit script um die gesamte Sitzung aufzuzeichnen. Er ist Teil von util-linux Paket und sollte daher auf den meisten Linux-Systemen vorhanden sein. Sie können einen Alias oder eine Funktion erstellen, die script -c python und das wird in einer typescript Datei. Hier ist zum Beispiel ein Nachdruck einer solchen Datei.

$ cat typescript                                                                                                      
Script started on Sat 14 May 2016 08:30:08 AM MDT
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Hello Pythonic World'
Hello Pythonic World
>>> 

Script done on Sat 14 May 2016 08:30:42 AM MDT

Kleiner Nachteil dabei ist, dass die script zeichnet alles auf, auch Zeilenvorschübe, wenn Sie die Leertaste drücken, usw. Sie können also Folgendes verwenden col um die Ausgabe zu bereinigen (siehe dieser Beitrag auf Unix&Linux Stackexchange ) .

1voto

fandyst Punkte 2660

Es gibt noch eine andere Möglichkeit: Pyslice. In den "wxpython 2.8 docs demos and 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 ----, die jede Zeile wie ein interaktiver Interpreter mit sofortigem Echo ausführt.

Natürlich werden alle Codeblöcke und die Ergebnisse jedes Blocks automatisch in einer txt-Datei gespeichert.

die ergebnisse werden direkt hinter dem entsprechenden codeblock protokolliert. sehr praktisch.

the overview of pyslices

1voto

user2314737 Punkte 23784

Unter IPython verwende ich zunächst

In [2]: %hist

um meinen früheren Code zu sehen. Ich wähle den Abschnitt aus, den ich speichern möchte, und füge ihn dann in die Datei my_file.py unter Verwendung der %%file Magie (kurz für %%writefile )

In [3]: %%file my_file.py
   ...: # paste code here 
   ...:  
   ...:  

am Ende zwei Mal zurückschlagen.

Um an eine Datei anzuhängen, verwenden Sie die Option -a : %%file -a my_file.py .

Bei Bedarf kann ich die Datei in der darunter liegenden Befehlszeile mit dem Ausrufezeichen auflisten, bearbeiten usw.

In [5]: !ls -l my_file.py
In [6]: !vi my_file.py

0voto

E. F. Haghish Punkte 182

In einigen Kommentaren wurde gefragt, wie man alle IPython-Eingaben auf einmal speichern kann. Für die %save-Magie in IPython können Sie alle Befehle wie unten gezeigt programmatisch speichern, um die Eingabeaufforderung zu vermeiden und auch um die Angabe der Eingabenummern zu vermeiden. aktuelleZeile = len(In)-1 %save -f my_session 1-$aktuelleZeile

El -f Option wird verwendet, um die Ersetzung von Dateien zu erzwingen und die len(IN)-1 zeigt die aktuelle Eingabeaufforderung in IPython an und ermöglicht es Ihnen, die gesamte Sitzung programmatisch zu speichern.

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