So speichern Sie die Python-Druckausgabe in einer Textdatei
Wie ich es endlich geschafft habe, Python-Ausgaben direkt in eine Textdatei zu exportieren!
Ehrlich gesagt, ich kenne das. Man schreibt Python-Code, führt ihn aus und die gesamte Ausgabe blinkt einfach auf der Konsole. Gut für schnelle Kontrollen, aber was, wenn man sie für später speichern möchte? Früher habe ich kopiert und eingefügt und dann festgestellt, dass ich die Hälfte vergessen hatte. Nach einigem Herumprobieren – hauptsächlich Herumprobieren, definitiv auch einige Fehler – habe ich endlich eine ziemlich einfache Möglichkeit gefunden, die Ausgabe meines Skripts direkt in eine .txtDatei zu schreiben. Ich dachte, ich teile sie, denn vielleicht erspart es jemand anderem ein paar Stunden Frust.
Das Basisskript zum Laufen bringen
Als Erstes benötigen Sie ein funktionierendes Python-Skript. Normalerweise erstelle ich einfach eine main.pyDatei. Beginnen Sie dort mit dem Schreiben Ihres Codes – macht Sinn, oder? Es ist schwierig, die Ausgabe umzuleiten, wenn Ihr Skript einfach in Ihrer IDE schwebt oder nicht einmal gespeichert ist. Auf meinem älteren ASUS war es in den erweiterten Menüs vergraben, daher kenne ich die Mühe, die richtige Stelle zu finden! Führen Sie Ihr Skript auf jeden Fall von einem Terminal oder einer Eingabeaufforderung aus. Unter Windows ist das PowerShell oder CMD; unter Linux/Mac einfach Terminal. Stellen Sie sicher, dass Sie sich beim Ausführen tatsächlich im richtigen Ordner befinden.
Öffnen einer Datei im Schreibmodus
Dieser Teil hat mich zunächst verwirrt: das Öffnen der Ausgabedatei. Die Python- open()Funktion ist Ihr Freund. Im Grunde geht man so vor:
with open('output.txt', 'w') as file: # your code here
Das 'w'bedeutet Schreibmodus. Wenn die Datei also existiert, wird sie zuerst gelöscht. Wenn Sie stattdessen eine bestehende Datei ergänzen möchten, ändern Sie es in 'a'„Anhängen“.Ich bevorzuge jedoch vorerst einen Neuanfang. Nur zur Info: Auf jedem System wird die Datei in Ihrem aktuellen Arbeitsverzeichnis erstellt, sofern Sie keinen vollständigen Pfad angeben. Sie können überprüfen, wo Ihr Skript ausgeführt wird:
import os print(os.getcwd())
Umleitung print()in Ihre Textdatei
Dies ist der entscheidende Schritt. Normalerweise print()wird die Ausgabe einfach auf der Konsole ausgegeben. Wenn Sie jedoch ein fileArgument übergeben, wird die Ausgabe stattdessen in diese Datei geschrieben. Zum Beispiel:
print('Here’s my output', file=file)
Anstatt Ihr Terminal zu überladen, landet alles in output.txt. Ich habe festgestellt, dass es am einfachsten ist, den Code übersichtlich zu halten, indem man das Argument einfach bei jedem Ausdruck hinzufügt. Wenn Sie alle Standardausgaben vorübergehend umleiten möchten, können Sie mit Ihrem Dateihandle file=fileswappen. Ehrlich gesagt ist das aber komplizierter, und ich habe es nur einmal ausprobiert und es hier letztendlich nicht benötigt.sys.stdout
Vergessen Sie nicht, die Datei zu schließen
Das war ein großer Fehler, den ich immer wieder machte: Ich vergaß, die Datei zu schließen. Wenn Sie sie nicht schließen, bleibt Ihre Ausgabe möglicherweise in einem Puffer und wird nie auf die Festplatte geschrieben. Das Schöne an der withAnweisung ist, dass sie dies automatisch für Sie erledigt, sodass Sie nicht daran denken müssen, aufzurufen file.close(). Das ist sauberer, sicherer und zuverlässiger. Sobald der Block endet, wird alles gespeichert und ordnungsgemäß geschlossen.
Ausführen des Skripts und Überprüfen der Ausgabe
Sobald alles eingestellt ist, führen Sie Ihr Skript einfach mit folgendem Befehl aus:
python main.py
oder, wenn Sie Linux/Mac verwenden und Ihr Setup standardmäßig auf Python 3 eingestellt ist, als python3:
python3 main.py
Sie sollten die Ausgabe darin sehen output.txt. Falls nicht, überprüfen Sie den Skriptpfad, stellen Sie sicher, dass es tatsächlich ausgeführt wird, oder prüfen Sie, ob irgendwo Fehler lauern. Manchmal stürzten meine Skripte unbemerkt ab oder übersprangen den Druckteil. Daher musste ich einige printAnweisungen hinzufügen, um sicherzustellen, dass sie ausgeführt wurden.
Nur eine kurze Zusammenfassung – es ist keine Raketenwissenschaft
- Erstellen Sie Ihre Python-Datei (
main.py) - Öffnen Sie eine Datei im Schreibmodus (
with open('output.txt', 'w') as file:) - Verwenden Sie es
print(..., file=file)für die Ausgabe, die Sie speichern möchten - Verlassen Sie sich auf den
withBlock, um die Datei automatisch zu schließen - Führen Sie Ihr Skript aus und überprüfen Sie
output.txt
Ehrlich gesagt, nachdem ich das herausgefunden hatte, wurde das Debuggen viel einfacher, insbesondere bei langen Läufen oder wenn ich Protokolle für später benötigte. Man könnte so etwas auch python main.py > output.txtdirekt vom Terminal aus tun, aber mir gefiel dieser Ansatz, weil er im Skript selbst etwas kontrollierter ist.
Und hey, wenn Sie eine Menge Daten ausgeben, file.flush()können Sie durch gelegentliches Hinzufügen sicherstellen, dass alles in Echtzeit gespeichert wird und nicht im Speicher verweilt. Das ist eine nette Geste, wenn Sie streamen oder protokollieren.
Ich hoffe jedenfalls, das hilft – ich habe viel zu lange gebraucht, um es richtig hinzubekommen, und ich habe mir fast die Haare gerauft, bevor mir klar wurde, wie einfach es eigentlich ist. Hoffentlich findet jemand anderes das hilfreich und spart sich ein Wochenende voller Herumprobieren. Viel Spaß beim Programmieren!
Ähnliche Artikel
War dieser Artikel hilfreich?