subprocess.CalledProcessError not giving error message

Viewed 2210

I am using below code for getting output of shell command.

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))

When a valid command is being passed for cmd like echo hello, the program is running fine and giving output as (0, None, "hello\n")

But if I give a wrong kind of command I am expecting the error message should come in err, but its getting printed directly. For example if I pass ls -lrt foo in cmd the output is coming as

anirban@desktop> python mytest.py
ls: cannot access foo: No such file or directory
x2 e oNone

So I want ls: cannot access foo: No such file or directory should be coming in err. How to do that?

1 Answers
Related