Ich habe ein Programm in Python geschrieben, das eine Meldung ausgibt. Ich möchte, dass dieses Programm in den Hintergrund geht und seine Meldung in eine Datei druckt. Also habe ich in Bash Folgendes geschrieben: python program > message &
. Problem: Die Meldung erscheint (mit cat oder vi) nur, wenn ich das Programm unterbreche. Kann mir jemand erklären, wo das Problem liegt und ob es eine einfache Lösung gibt?
Antwort1
Python verwendet die vollständige Pufferung, wenn die Ausgabe kein TTY ist.
Führen Sie Ihr Programm mit python -u
-- aus. Dadurch werden stdout und stderr in Python3 und ebenfalls stdin in Python2 ungepuffert.
Beachten Sie, dass dies nichts mit dem im Hintergrund laufenden Programm zu tun hat, sondern mit der Tatsache, dass seine Standardausgabe kein TTY ist.
Antwort2
Könnte Flush Ihnen hier helfen? Ich hoffe, das Verlinken auf andere Seiten ist kein Problem. siehehttps://stackoverflow.com/questions/230751/how-to-flush-output-of-print-function