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?Für diejenigen, die spacemacs
そして ipython
Das kommt mit python-layer
Die Funktion "Speichern" erzeugt eine Menge unerwünschter Ausgaben, da im Hintergrund ständig Befehle zur automatischen Vervollständigung laufen, wie z. B.:
len(all_suffixes)
';'.join(__PYTHON_EL_get_completions('''len'''))
';'.join(__PYTHON_EL_get_completions('''all_substa'''))
len(all_substantives_w_suffixes)
';'.join(__PYTHON_EL_get_completions('''len'''))
';'.join(__PYTHON_EL_get_completions('''all'''))
';'.join(__PYTHON_EL_get_completions('''all_'''))
';'.join(__PYTHON_EL_get_completions('''all_w'''))
';'.join(__PYTHON_EL_get_completions('''all_wo'''))
';'.join(__PYTHON_EL_get_completions('''all_wor'''))
';'.join(__PYTHON_EL_get_completions('''all_word'''))
';'.join(__PYTHON_EL_get_completions('''all_words'''))
len(all_words_w_logograms)
len(all_verbs)
Um dies zu vermeiden, speichern Sie den ipython-Puffer einfach wie jeden anderen Puffer: spc f s
Wenn Sie bpython wird Ihr gesamter Befehlsverlauf standardmäßig in ~/.pythonhist
.
Um die Befehle zur späteren Wiederverwendung zu speichern, können Sie sie in eine Python-Skriptdatei kopieren:
$ cp ~/.pythonhist mycommands.py
Dann bearbeiten Sie diese Datei, um sie zu bereinigen und unter dem Python-Pfad ablegen (globale oder virtuelle Umgebungs-Site-Pakete, aktuelles Verzeichnis, Erwähnung in *.pth oder auf andere Weise).
Um die Befehle in Ihre Shell einzubinden, importieren Sie sie einfach aus der gespeicherten Datei:
>>> from mycommands import *
Ich möchte einen anderen Weg vorschlagen, um Python-Sitzung durch tmux auf Linux zu erhalten. Sie starten tmux, verbinden Sie sich mit der Sitzung, die Sie geöffnet haben (wenn nicht verbunden, nachdem Sie sie direkt geöffnet haben). führen Sie Python aus und tun Sie, was auch immer Sie tun. dann trennen Sie die Sitzung.
Vorteile dieser Methode: Sie können sich von jedem anderen Gerät aus in diese Sitzung einklinken (falls Sie Ihren PC per ssh erreichen können)
Nachteile dieser Methode: diese Methode gibt die von der geöffneten Python-Sitzung verwendeten Ressourcen erst dann frei, wenn Sie den Python-Interpreter tatsächlich verlassen.
So speichern Sie Eingaben und Ausgaben unter XUbuntu :
- Unter XWindows führen Sie iPython über die Xfce-Terminalanwendung aus
- anklicken.
Terminal
in der oberen Menüleiste und suchen Sie nachsave contents
in der Auswahlliste
Ich finde, dass dies die Ein- und Ausgaben speichert, und zwar bis zu dem Zeitpunkt, an dem ich das Terminal geöffnet habe. Dies ist nicht ipython-spezifisch und würde auch mit ssh-Sitzungen oder anderen Aufgaben funktionieren, die vom Terminalfenster aus ausgeführt werden.
Sie können die integrierte Funktion Öffnen verwenden: Ich verwende sie in allen meinen Programmen, in denen ich einen Verlauf speichern muss (einschließlich Taschenrechner, etc.) zum Beispiel:
#gk-test.py or anything else would do
try: # use the try loop only if you haven't created the history file outside program
username = open("history.txt").readline().strip("\n")
user_age = open("history.txt").readlines()[1].strip("\n")
except FileNotFoundError:
username = input("Enter Username: ")
user_age = input("Enter User's Age: ")
open("history.txt", "w").write(f"{username}\n{user_age}")
#Rest of the code is secret! try it your own!
Ich möchte mich bei allen bedanken, denen meine Kommentare gefallen haben! Danke, dass ihr das gelesen habt!
- See previous answers
- Weitere Antworten anzeigen