如何更新python附带的模块?

时间:2015-08-19 15:45:09

标签: python ubuntu subprocess

我遇到了子进程模块的问题。我错过了check_output函数,我想知道是否有办法在不完全重新安装python的情况下更新/替换它。

1 个答案:

答案 0 :(得分:1)

是的,可以,如果需要,您可以自己添加功能(仅在您需要它时才建议向后功能)。

if 'check_output' not in dir(subprocess):
    def check_output(cmd_args, *args, **kwargs):
        proc = subprocess.Popen(
            cmd_args, *args,
            stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kwargs)
        out, err = proc.communicate()
        if proc.returncode != 0:
            raise subprocess.CalledProcessError(args)
        return out
    subprocess.check_output = check_output

但正如该代码所示,您也可以更详细地编写它,并且它不会以任何不同的方式运行。

编辑:直接从子流程模块版本Python 2.7

复制
def check_output(*popenargs, **kwargs):
    if 'stdout' in kwargs:
        raise ValueError('stdout argument not allowed, it will be overridden.')
    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]
        raise subprocess.CalledProcessError(retcode, cmd, output=output)
    return output
相关问题