Create a gist now

Instantly share code, notes, and snippets.

Backport of subprocess.check_output() from Python 2.7 to Python 2.6
import subprocess
def check_output(*popenargs, **kwargs):
r"""Run command with arguments and return its output as a byte string.
Backported from Python 2.7 as it's implemented as pure python on stdlib.
>>> check_output(['/usr/bin/python', '--version'])
Python 2.6.2
"""
process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
output, unused_err = process.communicate()
retcode = process.poll()
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
error = subprocess.CalledProcessError(retcode, cmd)
error.output = output
raise error
return output
@rcoup
raise subprocess.CalledProcessError(retcode, cmd, output=output)

CalledProcessError doesn't take kwargs in earlier versions of Python...

@edufelipe
Owner

@rcoup Thanks for the report. Updated the gist so the output is set the right way.

@achikin

Good job, thanks!

@deadwait

thank you for this.

@sachinkanekar

thanks! That was helpful

@busbey

What are the license terms for your backport work? Could it be "under the same terms as Python 2.7" or "PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2"? (ref: said license)

@busbey

Ping @edufelipe. We'd like to use this in the YCSB project, but without a license we'll reimplemented our own.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment