Gleichzeitige Ausgabe auf Bildschirm und Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
python_newbee
User
Beiträge: 2
Registriert: Freitag 25. Mai 2018, 10:17

Freitag 25. Mai 2018, 10:23

Hallo Zusammen,
ich hoffe dieses Thema findet noch Beachtung, wenn ich hier eine neue Frage poste.

Ich beschäftige mich ganz frisch mit Python und habe ehrlich nicht viel Ahnung davon.
Jedenfalls möchte ich einen Text, der auf dem Bildschirm ausgegeben wird auch in eine Textdatei speichern. Leider weiß ich nicht so recht, wie das geht.

Hier mal die funktionierende Zeile mit der Bildschirmausgabe:

else:
print(u'file loaded: {}\nMessage: {}'.format(audio_file, response['message']))

und so würde ich es in eine Textdatei speichern:

file = open(path/to/the/file/message.txt, "w+")
file.write(message.text)
file.close()

Nur so funktioniert es leider nicht und ich weiß nicht, wie ich diese Zeilen vernünftig in meinen Code bekomme... ich hoffe, ich konnte mich klar ausdrücken.

Vielen Dank schon mal für die Hilfe!
Lg Anna
__deets__
User
Beiträge: 3353
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 25. Mai 2018, 10:35

Wenn du selbst überall die Kontrolle darüber hast, wann etwas ausgegeben wird, dann ist die einfachste Lösung den Text an einen Namen zu binden, und dann kannst du den ausgeben über beliebig viele Kanäle.

Code: Alles auswählen

message = u'file loaded: {}\nMessage: {}'.format(audio_file, response['message'])
print(message)
with open(“Datei”, “a”) as outf:
        outf.write(message)
        outf.write(“\n”) # print macht automatisch ein newline. write nicht.
Und diese 4 Zeilen kannst du am besten in eine Funktion packen, zB log, und die dann immer aufrufen:

Code: Alles auswählen

def log(message):
       print...

log(u'file loaded: {}\nMessage: {}'.format(audio_file, response['message']))
python_newbee
User
Beiträge: 2
Registriert: Freitag 25. Mai 2018, 10:17

Freitag 25. Mai 2018, 11:11

Super, danke für die schnelle Antwort.

Ich werde es gleich mal probieren. :)
Antworten