Python 3.4 - Fehlerkanal mittels subprocess.check_output auslesen
Verfasst: Sonntag 15. Januar 2017, 17:34
Hallo,
ich arbeite an einem GUI-Wrapper für diverse Kommandozeilen-Tools und bin auf eine Schwierigkeit gestoßen, wenn es darum geht, stderr auszulesen.
Zunächst versuchte ich, den Standardfehlerkanal auf stdout umzuleiten und eventuell auftretende Fehler mittels try...except abzufangen. Das funktioniert aber nicht ganz, wie erhofft:
Der Code ist nur beispielhaft, jedenfalls läuft er im Fehlerfalle in einen "referenced before assignment"-Error, da cmd_output offensichtlich nur lokal für den try-Block gültig ist. Lese ich "subp_err" aus, dann erhalte ich lediglich die von Python generierte Fehlermeldung mit Exit-Code 1. Das Kommandozeilentool schreibt im Falle eines Fehlers aber etwas nach stderr, nur wie komme ich daran?
Gruß,
Andreas
ich arbeite an einem GUI-Wrapper für diverse Kommandozeilen-Tools und bin auf eine Schwierigkeit gestoßen, wenn es darum geht, stderr auszulesen.
Zunächst versuchte ich, den Standardfehlerkanal auf stdout umzuleiten und eventuell auftretende Fehler mittels try...except abzufangen. Das funktioniert aber nicht ganz, wie erhofft:
Code: Alles auswählen
try:
cmd_output = subprocess.check_output(["my_command", my_args], stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as subp_err:
print(cmd_output)
Gruß,
Andreas