我可以使用os.system()
执行终端命令,但我想捕获此命令的输出。我怎么能这样做?
答案 0 :(得分:42)
>>> import subprocess
>>> cmd = [ 'echo', 'arg1', 'arg2' ]
>>> output = subprocess.Popen( cmd, stdout=subprocess.PIPE ).communicate()[0]
>>> print output
arg1 arg2
>>>
使用subprocess.PIPE时出现错误。对于巨大的输出使用这个:
import subprocess
import tempfile
with tempfile.TemporaryFile() as tempf:
proc = subprocess.Popen(['echo', 'a', 'b'], stdout=tempf)
proc.wait()
tempf.seek(0)
print tempf.read()
答案 1 :(得分:16)
改为使用subprocess
module。
pipe = Popen("pwd", shell=True, stdout=PIPE).stdout
output = pipe.read()
在Python 2.7中,您还可以使用check_output()
函数。
答案 2 :(得分:8)
答案 3 :(得分:0)
最简单的方法是使用库命令
import commands
print commands.getstatusoutput('echo "test" | wc')