subprocess Live Output

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.
Antworten
s0pply
User
Beiträge: 1
Registriert: Montag 23. März 2026, 19:53

Hallo zusammen,

bin neu in der Sprache Python und schreibe mir eine kleine Linux Shell Anwendung.
Ich Starte in meinem Script ein Subprocess der Live ausgegeben werden soll, soweit
klappt auch alles, nun möchte ich bei der Ausgabe ein ">>> " davor einsetzen, nun
habe ich aber kein Ansatz Punkt oder im Netz was gefunden, was zu meinen Code
passen würde:

Code: Alles auswählen

    while True:
        out = process.stdout.read(1)
        if out == "" and process.poll() != None:
            break
        if out != "":
            sys.stdout.write(out)
            sys.stdout.flush()
wenn ich in der zweiten Zeile readline verwende, kann ich die Ausgabe anpassen, wie
ich möchte aber leider muss ich (aktuell) read(1) nutzen, da auch eine Eingabe erforderlich
ist und die Frage in der Zeile dazu nicht angezeigt wird.
Komme gerade nicht mehr weiter, könnt Ihr mir da Helfen.

Gruß
Benutzeravatar
Dennis89
User
Beiträge: 1717
Registriert: Freitag 11. Dezember 2020, 15:13

Code: Alles auswählen

sys.stdout.write(f">>>{out}")
https://docs.python.org/3/tutorial/inpu ... -f-strings

Die zweite `if`-Abfrage ist überflüssig, weil wenn die erste wahr ist, dann bricht die Schleife ab und die zweite Abfrage, wird nicht abgefragt. Ist die erste Abfrage nicht wahr, soll geschrieben werden, also brauch man da `out` nicht noch einmal abfragen. `None` prüft man eher mit `is not None` und `out == ""` könnte man mit ` if not out` abfragen.


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten