Seite 1 von 1

Programm "live" im Hintergrund

Verfasst: Donnerstag 2. Juni 2011, 18:34
von Pacnos
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 ...

Re: Programm "live" im Hintergrund

Verfasst: Donnerstag 2. Juni 2011, 20:22
von 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'))

Re: Programm "live" im Hintergrund

Verfasst: Donnerstag 2. Juni 2011, 22:38
von Pacnos
Stimmt, ich habe beim kopieren das einrücken ein bischen versaut :wink:

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