Python: Holen Sie sich die Ausgabe von einer Befehlszeile beendet mit exit-code ungleich null

Ich bin Mit Python 2.7.1 auf einem Windows Server 2008 R2 x64-box.

Ich versuche, die Ausgabe eines Kommandozeilen-Prozess gibt einen von null verschiedenen exit-status nach dem ausgeben der Informationen, die ich brauche.

War ich zunächst mit subprocess.check_output, den Fang und die CalledProcessError die Auftritt, mit einer von null verschiedenen exit-status, aber während der returncode abgelegt wurde, in der Fehlermeldung, keine Ausgabe enthüllt.

Laufen gegen diese Fälle, die geben Ausgabe, die aber einen exit-status von 0 funktioniert einwandfrei und ich kann die Ausgabe mittels subprocess.check_output.

Meine Vermutung war, wurde die Ausgabe wird auf STDOUT geschrieben aber die Ausnahme zieht Ihren 'output' von STDERR. Ich habe versucht, zu re-implementieren Sie die Funktionalität der check_output, aber ich bekomme immer noch nichts auf die Ausgabe, wenn ich glaube, ich sollte sehen, dass Ausgabe auf STDOUT und STDERR. Mein Aktueller code ist unten (wo 'Befehl' der gesamte text, einschließlich der Parameter, der Befehl, den ich verwende:

process = subprocess.Popen(command, stdout=subprocess.PIPE, 
stderr=subprocess.STDOUT, universal_newlines=True)
output = process.communicate()
retcode = process.poll()
if retcode:
    raise subprocess.CalledProcessError(retcode, image_check, output=output)
    return output 

Dieser gibt mir folgende in der Variablen Ausgabe: [('', None)]

Ist mein subprocess.Popen code korrekt?

nach .communicate() könnten Sie process.returncode direkt statt process.poll().
Wie man die Ausgabe von der Kommandozeile mit Python: stackoverflow.com/a/20456745/445131

InformationsquelleAutor bplattenburg | 2011-02-16

Schreibe einen Kommentar