【发布时间】:2014-08-10 19:22:49
【问题描述】:
我想执行shell命令(比如说ubuntu的ls -a命令)
现在,在阅读了几个 SOF 线程之后,我发现 subprocess 模块是最好的。真的是这样吗?
from subprocess import call
t = call(['ls', '-a'])
print t
当我运行这个脚本时,它只是在我的系统终端上打印了结果,变量t 得到了值0。
shell=False 也不起作用;我刚刚试了一下。
我如何将结果存储在变量中而不是将其打印到终端(或者也可以打印到终端,如果无法摆脱它的话)?
我们可以为此目的使用任何其他库吗?
编辑:
t = os.popen('ls -a').read()
这行得通!但是这是否有任何错误或一些问题?
【问题讨论】:
-
PyPI 上有很多比
subprocess更高级别的第三方库,您可能想看看。对于你正在做的事情,你可能不需要他们的任何花哨的东西,但你可能会发现它们在未来很有用。 -
顺便说一句,
0是ls程序的返回值。每个程序都会返回一个小整数作为值,0 几乎总是意味着成功。就像 shell 有不同的方式来运行一个程序并存储它的返回值,与运行一个程序并捕获它的输出一样,subprocess对两者有不同的功能。
标签: python python-2.7 python-3.x subprocess