python getoutput()在subprocess中等价

我想在一个python脚本中得到一些shell命令的输出,例如lsdf 。 我看到commands.getoutput('ls')被弃用,但subprocess.call('ls')只会得到我的返回码。

我希望有一些简单的解决scheme。

使用subprocess.Popen

 import subprocess process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE) out, err = process.communicate() print(out) 

请注意,通信块直到过程终止。 如果你需要输出,你可以使用process.stdout.readline() 。 欲了解更多信息,请参阅文档 。

对于Python> = 2.7,请使用subprocess.check_output()

http://docs.python.org/2/library/subprocess.html#subprocess.check_output