Geben Sie print
ein file
Schlüsselwortargument an, wobei der Wert des Arguments ein Dateistream ist. Wir können einen Dateistream mit der open
Funktion erstellen :
print("Hello stackoverflow!", file=open("output.txt", "a"))
print("I have a question.", file=open("output.txt", "a"))
Aus der Python-Dokumentation zuprint
:
Das file
Argument muss ein Objekt mit einer write(string)
Methode sein. wenn es nicht vorhanden oder ist None
, sys.stdout
wird verwendet.
Und die Dokumentation füropen
:
Öffnen Sie file
ein entsprechendes Dateiobjekt und geben Sie es zurück. Wenn die Datei nicht geöffnet werden kann, wird eine OSError
ausgelöst.
Das " a "
als zweites Argument open
bedeutet "anhängen" - mit anderen Worten, der vorhandene Inhalt der Datei wird nicht überschrieben. Wenn Sie möchten, dass die Datei stattdessen überschrieben wird, verwenden Sie "w"
.
Das mehrmalige Öffnen einer Datei open
ist jedoch nicht ideal für die Leistung. Sie sollten es idealerweise einmal öffnen und benennen und diese Variable dann an print
die file
Option übergeben. Sie müssen daran denken, die Datei danach zu schließen!
f = open("output.txt", "a")
print("Hello stackoverflow!", file=f)
print("I have a question.", file=f)
f.close()
Es gibt auch eine syntaktische Verknüpfung dafür, die der with
Block ist. Dadurch wird Ihre Datei am Ende des Blocks für Sie geschlossen:
with open("output.txt", "a") as f:
print("Hello StackOverflow!", file=f)
print("I have a question.", file=f)
with
Anweisung verwenden, um die Datei zu öffnen. Dadurch wird einfile
Objekt erstellt, während des gesamten Blocks geöffnet und am Ende geschlossen. Schauen Sie sich das erste Beispiel in diesem Artikel an . Lassen Sie mich wissen, wenn Sie weitere Fragen haben!Sie können stdout in eine Datei "output.txt" umleiten:
import sys sys.stdout = open('output.txt','wt') print ("Hello stackoverflow!") print ("I have a question.")
quelle
Verwenden Sie das Protokollierungsmodul
def init_logging(): rootLogger = logging.getLogger('my_logger') LOG_DIR = os.getcwd() + '/' + 'logs' if not os.path.exists(LOG_DIR): os.makedirs(LOG_DIR) fileHandler = logging.FileHandler("{0}/{1}.log".format(LOG_DIR, "g2")) rootLogger.addHandler(fileHandler) rootLogger.setLevel(logging.DEBUG) consoleHandler = logging.StreamHandler() rootLogger.addHandler(consoleHandler) return rootLogger
Holen Sie sich den Logger:
Und starten Sie die Protokollierung / Ausgabe (ing):
logger.debug('Hi! :)')
quelle
Eine andere Variante kann sein ... Schließen Sie die Datei anschließend unbedingt
import sys file = open('output.txt', 'a') sys.stdout = file print("Hello stackoverflow!") print("I have a question.") file.close()
quelle
Eine andere Methode, ohne Ihren Python-Code aktualisieren zu müssen, wäre die Umleitung über die Konsole .
Grundsätzlich sollten Sie Ihr Python-Skript
print()
wie gewohnt verwenden, dann das Skript über die Befehlszeile aufrufen und die Befehlszeilenumleitung verwenden. So was:Ihre
output.txt
Datei enthält jetzt alle Ausgaben Ihres Python-Skripts.Bearbeiten:
Um den Kommentar zu adressieren; Ändern Sie unter Windows den Schrägstrich in einen umgekehrten Schrägstrich.
(dh
.\myscript.py
)quelle
Angenommen, meine Eingabedatei ist "input.txt" und die Ausgabedatei ist "output.txt".
Angenommen, die Eingabedatei enthält Details zum Lesen:
5 1 2 3 4 5
Code:
import sys sys.stdin = open("input", "r") sys.stdout = open("output", "w") print("Reading from input File : ") n = int(input()) print("Value of n is :", n) arr = list(map(int, input().split())) print(arr)
Dies wird also aus der Eingabedatei gelesen und die Ausgabe wird in der Ausgabedatei angezeigt.
Weitere Informationen finden Sie unter https://www.geeksforgeeks.org/inputoutput-external-file-cc-java-python-competitive-programming/
quelle
Man kann die zurückgegebene Ausgabe einer Funktion direkt in einer Datei speichern.
print(output statement, file=open("filename", "a"))
quelle