Programm "live" im Hintergrund

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
Pacnos
User
Beiträge: 19
Registriert: Sonntag 8. Mai 2011, 20:17

Hallo Zusammen,

ich ärgere mich gerade mit Subprocess rum. Ich möchte ein C-Programm ausführen welches im Hintergrund einen Sensor aussliest, damit ich die aussgabe live habe, habe ich mir folgendes Script gebastelt:

Code: Alles auswählen

if __name__ == '__main__':
    process = subprocess.Popen(['temp','-a',], stdout=subprocess.PIPE)
    
  while process.poll() is None:
    print(process.stdout.readline())

Hier bekomme ich auch eine Ausgabe:

Code: Alles auswählen

b'\r\n'
b'Jun 02 19:32:14 Sensor 0 C: 22.94 F: 73.29\r\n'
b''
Meine Frage ist jetzt, ist das b'' vor dem String normal? --> Erledigt, es war ein Byte String mit .decode("utf-8") ist das behoben ....

Wenn ich das richtig gelesen habe, gibt es für subprocess auch keinen timeout odre?

Sry wenn ich euch mit meinen Anfängerfragen nerve und schonmal danke für eure Hilfe ...
BlackJack

@Pacnos: Das sieht nicht aus als wenn es lauffähig wäre. Da würde ich einen `IndentationError` erwarten.

Ansonsten kann man die ``while``-Schleife auch durch eine ``for``-Schleife ersetzen:

Code: Alles auswählen

    for line in process.stdout:
        print(line.decode('utf-8'))
Pacnos
User
Beiträge: 19
Registriert: Sonntag 8. Mai 2011, 20:17

Stimmt, ich habe beim kopieren das einrücken ein bischen versaut :wink:

Danke für den Tip mit der For - Schleife ....
Antworten