Wie kann subprocess mir während eines Prozesses den...

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.
azami1986
User
Beiträge: 20
Registriert: Mittwoch 29. Oktober 2008, 10:35

Wie kann subprocess mir während eines Prozesses den...

Beitragvon azami1986 » Mittwoch 5. November 2008, 17:15

Hallo Leute,

irgendwie gibt mir subprocess während eines Prozesses nichts zurück. Erst wenn es fertig ist, wird etwas zurück gegeben.


Wenn ich einen Prozess unter cmd starte, dann werden im cmd mehrere "echos" ausgegeben, wie z.B. "10%" und nach einer bestimmten zeit "20%"... usw.

Blöderweise gibt mit subprocess die "echos" erst zurück, wenn es ganz durch ist, also bei 100%.

Ich rufe subprocess folgenderweise auf:

Code: Alles auswählen

myProc = subprocess.Popen(cmd, shell=True,
                         stdout=subprocess.PIPE,
                         stderr=subprocess.PIPE,
                         universal_newlines=True)


Wie kann ich es so machen, dass mir subprocess ständig, d.h. jede Sekunde was ausgibt und nicht wartet bis es fertig ist?

Viele Grüße
Azami
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Mittwoch 5. November 2008, 17:18

Dieser Thread erklärt Dir das hoffentlich.
MFG
HWK
azami1986
User
Beiträge: 20
Registriert: Mittwoch 29. Oktober 2008, 10:35

Beitragvon azami1986 » Mittwoch 5. November 2008, 17:27

Danke für die Antwort.

Code: Alles auswählen

# -*- coding: utf-8 -*-

import sys, subprocess

IS_WIN = (sys.platform == "win32")

cmd = ["ping", "127.0.0.1"]
if not IS_WIN:
    cmd.append("-c 5")

print " ".join(cmd)
p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE)

line = ""
while p.poll() is None:
    char = p.stdout.read(1)
    if char == "\n":
        print line
        line = ""
    elif IS_WIN and char == "\r":
        continue
    else:
        line += char

print "--- END ---"


Was macht er denn hier anderster als ich?! Er gibt es ja auch ganz normal zurück. Er hat noch eine Schleife reingebaut, ich denke aber nicht, dass das eine heruasragende Rolle spielt, oder?
BlackJack

Beitragvon BlackJack » Mittwoch 5. November 2008, 18:16

@azami1986: Das funktioniert ja auch nicht. Du musst schon den ganzen Thread lesen.

Wer ist online?

Mitglieder in diesem Forum: Baidu [Spider], Don Terremoto