5

我正在尝试使用下面的脚本检查 check_output 的使用情况并遇到编译错误,我哪里出错了?

import os
import subprocess
from subprocess import check_output

#result = subprocess.check_output(['your_program.exe', 'arg1', 'arg2'])
SCRIPT_ROOT=subprocess.check_output(["pwd","shell=True"])
print SCRIPT_ROOT

def main ():
    pass

if __name__ == '__main__':
    main()

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    from subprocess import check_output
ImportError: cannot import name check_output
4

2 回答 2

10

check_output已在 Python 2.7 中引入。如果您使用的是较早版本的 python,则它不存在。

另一种方法是使用Popen.

output = subprocess.Popen(['pwd'], stdout=subprocess.PIPE).communicate()[0]

可以在这里找到证明。

新功能:子进程模块的 check_output() 运行带有指定参数集的命令,并在命令运行无误时将命令的输出作为字符串返回,否则引发 CalledProcessError 异常。

替代品演示。

import subprocess
cmd = subprocess.Popen(['pwd'], stdout=subprocess.PIPE)
output = cmd.communicate()[0]
print cmd.returncode
print output

输出

> python p.py
/Users/vlazarenko/tests

唯一真正的区别是Popen当命令返回非零代码时不会抛出异常。

于 2012-12-28T00:19:55.557 回答
4
于 2012-12-28T00:30:00.900 回答