python getoutput()在subprocess中等价
我想在一个python脚本中得到一些shell命令的输出,例如ls
或df
。 我看到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