- p = subprocess.Popen(cmd, stdout=subprocess.PIPE) # TODO use with
- (stdout, stderr) = p.communicate()
- if p.returncode != 0:
- raise Exception("Running %s returned non-zero exit code %d" % (str(cmd), p.returncode))
- return filter(len, stdout.split('\n')) # return list of non-empty lines
+ with subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE if suppress_stderr else None) as p:
+ (stdout, stderr) = p.communicate()
+ if p.returncode != 0:
+ raise Exception("Running %s returned non-zero exit code %d" % (str(cmd), p.returncode))
+ stdout = stdout.decode('utf-8').strip('\n')
+ return stdout.split('\n') if split else stdout