Python error: subprocess.CalledProcessError: Command returned non-zero exit status 1
21,291
The grep
command you're running exits with exit status 1
if it doesn't match anything. That non-zero exit code causes check_output
to raise an exception (that's what the "check" part of its name means).
If you don't want a failed match to raise an exception, consider using subprocess.getoutput
instead of check_output
. Or you could change your command to avoid non-zero exit codes:
func = "nova list | grep Shutdown || true"
Author by
Adam
Updated on March 24, 2020Comments
-
Adam about 4 years
I need to count the lines of a shell-command output in python script.
This function works fine in case there is output, but in case the output is empty, it gives an error as explained in the error output.
I tried to avoid that using anif
statement in case the output of the command isNone
, but that didn't help.#!/usr/bin/python import subprocess lines_counter=0 func="nova list | grep Shutdown " data=subprocess.check_output(func, shell=True) if data is True: for line in data.splitlines(): lines_counter +=1 print lines_counter
Error output:
data=subprocess.check_output(func, shell=True) File "/usr/lib/python2.7/subprocess.py", line 573, in check_output raise CalledProcessError(retcode, cmd, output=output) subprocess.CalledProcessError: Command 'nova list | grep Shutdown ' returned non-zero exit status 1