执行shell命令并在Python中检索stdout

时间:2015-10-29 12:20:59

标签: python perl shell

在Perl中,如果我想执行foo之类的shell命令,我会这样做:

#!/usr/bin/perl
$stdout = `foo`

在Python中,我发现了这个非常复杂的解决方案:

#!/usr/bin/python
import subprocess
p = subprocess.Popen('foo', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
stdout = p.stdout.readlines()
retval = p.wait()

有没有更好的解决方案?

请注意,我不想使用callos.system。我想将stdout放在变量

3 个答案:

答案 0 :(得分:4)

一种简单的方法是使用sh包。 一些例子:

import sh
print(sh.ls("/"))

# same thing as above
from sh import ls
print(ls("/"))

答案 1 :(得分:0)

阅读更多subprocess文档。它有很多简化的辅助函数:

output = subprocess.check_output('foo', shell=True, stderr=subprocess.STDOUT)

答案 2 :(得分:0)

你可以试试这个

import os
print os.popen('ipconfig').read()
#'ipconfig' is an example of command