在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()
有没有更好的解决方案?
请注意,我不想使用call
或os.system
。我想将stdout
放在变量
答案 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