prüft den Status des Prozesses mit subprocess.Popen in Python

9

Wenn ich einen Prozess mit subprocess.Popen in Python wie folgt aufrufen:

myproc = subprocess.Popen(...).communicate()

Was ist der richtige Weg, um seinen Status zu sehen? Nicht seine Ausgabe zu stdout oder stderr, aber sein Ausgangsstatus, sobald er beendet ist (z. B. 0 für den Erfolg oder ein anderer für den Fehler)?

    
user248237dfsf 26.12.2012, 16:04
quelle

3 Antworten

19

returncode ist in der Tat die Antwort, aber die Lösung muss nicht kompliziert sein.

%Vor%

Weitere Informationen finden Sie in Python subprocess docs .

    
Brian Marshall 26.12.2012, 16:12
quelle
5

Ein Prozess hat keinen Rückgabecode, bis die Ausführung abgeschlossen ist. Wenn Sie also noch nicht fertig sind, müssen Sie entscheiden, was Sie tun möchten: warten Sie darauf oder geben Sie einen Indikator für "Ich bin noch nicht fertig" zurück.

Wenn Sie warten möchten, verwenden Sie communicate und überprüfen Sie dann das Attribut returncode .

Wenn Sie überprüfen möchten, ob der Rückgabecode gesetzt ist und None zurückgibt, falls nicht, verwenden Sie Popen.poll() .

    
katrielalex 26.12.2012 16:15
quelle
1

Sie müssen möglicherweise wait für Ihren Subprozess aufrufen und dann (einmal durchgeführt) den Status im Feld returncode der Subprozessinstanz überprüfen.

Ich habe eine kleine Routine, die Dinge anruft, vielleicht hilft es ...

%Vor%

Sie können es versuchen mit:

%Vor%     
BorrajaX 26.12.2012 16:08
quelle

Tags und Links