我正在尝试使用下面的脚本检查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
Run Code Online (Sandbox Code Playgroud)
fav*_*tti 10
check_output已经在Python 2.7中引入.如果您使用的是早期版本的python,那就不存在了.
替代方案是使用Popen.
output = subprocess.Popen(['pwd'], stdout=subprocess.PIPE).communicate()[0]
Run Code Online (Sandbox Code Playgroud)
这方面的证据可以在这里找到.
新函数:子进程模块的check_output()运行带有指定参数集的命令,并在命令运行时无错误地返回命令的输出作为字符串,否则引发CalledProcessError异常.
替补的演示.
import subprocess
cmd = subprocess.Popen(['pwd'], stdout=subprocess.PIPE)
output = cmd.communicate()[0]
print cmd.returncode
print output
Run Code Online (Sandbox Code Playgroud)
产量
> python p.py
/Users/vlazarenko/tests
Run Code Online (Sandbox Code Playgroud)
唯一真正的区别是Popen当命令返回非零代码时不会抛出异常.
| 归档时间: |
|
| 查看次数: |
7416 次 |
| 最近记录: |