Ich verwende unten Code für die Ausgabe von Shell-Befehl.subprocess.CalledProcessError gibt keine Fehlermeldung
import subprocess
exitcode, err, out = 0, None, None
try:
out = subprocess.check_output(cmd, shell=True, universal_newlines=True)
except subprocess.CalledProcessError as e:
exitcode, err = e.returncode, e.output
print("x{} e{} o{}".format(exitcode, err, out))
Wenn ein gültiger Befehl zum cmd
wie echo hello
wird übergeben, das Programm gut läuft und gibt Ausgang als (0, None, "hello\n")
Aber wenn ich eine falsche Art von Befehl gebe ich die Fehlermeldung erwarten kommen sollte, in err
, aber es wird direkt gedruckt. Zum Beispiel, wenn ich pass ls -lrt foo
in cmd
die Ausgabe kommt als
[email protected]> python mytest.py
ls: cannot access foo: No such file or directory
x2 e oNone
Deshalb möchte ich ls: cannot access foo: No such file or directory
in err
kommen sollte. Wie geht das?