Wie umleiten Stdout zu Datei und Konsole mit Skripting?
Ich soll zum ausführen eines python-Skript und erfassen Sie die Ausgabe in einer text-Datei als auch als möchten, zeigen Sie auf der Konsole.
Ich will geben Sie es als eine Eigenschaft des python-Skript selbst. NICHT verwenden Sie den Befehl echo "hello world" | tee test.txt
auf Eingabeaufforderung jedes mal.
Innerhalb Skript habe ich versucht:
sys.stdout = open('log.txt','w')
Aber das zeigt nicht die stdout Ausgabe auf dem Bildschirm.
Habe ich erfahren, logging-Modul, aber ich konnte nicht bekommen, viel Glück mit diesem Modul um die Arbeit zu tun.
InformationsquelleAutor der Frage user2033758 | 2013-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie shell-Umleitung während der Ausführung des python-Datei:
Diesem schreiben werden alle Ergebnisse gedruckt auf stdout aus der python-source-Datei auf das logfile.
Oder wenn Sie möchten, dass die Protokollierung von innerhalb des Skripts:
Jetzt können Sie verwenden:
Dies schreibt "Hello" sowohl stdout und das logfile
InformationsquelleAutor der Antwort Amith Koujalgi
Bekam ich die Möglichkeit zum umleiten der out-put-Konsole als auch in eine text-Datei als auch gleichzeitig:
InformationsquelleAutor der Antwort user2033758
Logging-Modul zu Debuggen und verfolgen Sie Ihre app
Hier ist, wie ich es geschafft log-Datei und auf console /stdout
Lesen Quelle:
https://docs.python.org/2/howto/logging-cookbook.html
InformationsquelleAutor der Antwort Radu Gabriel
Ich entwickelte eine einfachere Lösung. Man definiert einfach eine Funktion, die Datei drucken oder auf dem Bildschirm oder beide. In dem folgenden Beispiel Erlaube ich dem Benutzer zur Eingabe der Ausgabedatei-name als argument aber das ist nicht zwingend:
Nach diesem, alle, die benötigt wird, um das drucken einer Zeile sowohl in Datei-und/oder Bildschirm:
drucken(Line_to_be_printed)
InformationsquelleAutor der Antwort hector garcia
Basierend auf Amith Koujalgi Antworthier ein einfaches Modul können Sie für die Anmeldung verwenden -
transcript.py:
InformationsquelleAutor der Antwort Brian Burns
Zur Ausgabe in eine Datei umleiten und ein terminal ohne änderung, wie Sie Ihre Python-Skript verwendet wird, vor, Sie könnte verwenden
pty.spawn(itself)
:Wenn
pty
Modul ist nicht verfügbar (auf Windows), dann könnten Sie ersetzen Sie es mitteed_call()
- Funktiondie mehr tragbar, aber es wird eine normale Rohre statt ein pseudo-terminal -- es kann sich ändern, Verhalten einiger Programme.Den Vorteil
pty.spawn
undsubprocess.Popen
-basierte Lösungen ersetzensys.stdout
mit einem file-like-Objekt ist, dass Sie können erfassen Sie die Ausgabe auf einen Datei-Deskriptor Ebene z.B., wenn das Skript startet andere Prozesse, die auch die Ausgabe auf stdout/stderr. Siehe meine Antwort auf die Frage: Umleiten von stdout in eine Datei in Python?InformationsquelleAutor der Antwort jfs
Den
Tee
Klasse inIPython.utils.io
macht, was man will, aber es fehlt die__enter__
und__exit__
benötigten Methoden zu nennen, die in derwith
-Anweisung. Diejenigen Hinzugefügt werden, die voncontextlib.schließen
.InformationsquelleAutor der Antwort oha
Habe ich versucht, dieses:
InformationsquelleAutor der Antwort fxs
leiten Sie die Ausgabe in eine Datei >> python mit print rint "chevron" - syntax wie in der docs
sehen lassen,
checkout die Datei test.melden Sie die Daten haben
und das drucken auf der Konsole verwenden Sie einfach plain drucken - Anweisung .
InformationsquelleAutor der Antwort naveen tamanam