Python执行命令并将结果存储在变量中

时间:2014-08-10 19:22:50

标签: python python-2.7 python-3.x subprocess

我想执行shell命令(假设是ubuntu' s ls -a命令)

现在,在阅读了几个SOF主题之后,我发现subprocess模块是最好的。那是真的吗?

from subprocess import call
t = call(['ls', '-a'])
print t

当我运行此脚本时,它只是在我的系统终端上打印结果,变量t得到值0

shell=False也无效;我试了一下。

如何将结果存储在变量中而不是将其打印到终端(如果无法摆脱这种情况,也可以将其存储到终端中)?

我们可以为此目的使用任何其他库吗?

编辑:

t = os.popen('ls -a').read()

这很有效!但是有没有错误,或者有什么问题吗?

2 个答案:

答案 0 :(得分:2)

使用subprocess.check_output捕获输出。

from subprocess import check_output
t = check_output(['ls', '-a'])
print t

请注意,如果CalledProcessError返回非零退出代码,则会引发ls异常。

至于问题的其他部分,subprocess模块是在Python中运行子流程的首选(也是最好的,IMO)方式。你应该优先于os.popen

答案 1 :(得分:0)

from subprocess import PIPE,Popen
t = Popen(['ls', '-a'],stdout=PIPE)
t = t.communicate()[0]