import subprocess def run(*args, **kwargs): if isinstance(args[0], list): args = tuple(args[0]) kwargs.setdefault('stdout', subprocess.PIPE) kwargs.setdefault('stderr', subprocess.PIPE) check = kwargs.pop('check', True) proc = subprocess.Popen(args, stdout=kwargs['stdout'], stderr=kwargs['stderr']) stdout, stderr = proc.communicate() cp = subprocess.CompletedProcess(args, proc.returncode, stdout=stdout, stderr=stderr) if check: cp.check_returncode() return cp