拆分check_output返回值

时间:2015-08-19 15:32:02

标签: python python-2.7 subprocess

我正在尝试使用python运行一个unix命令,我有代码返回我想要的值,但似乎没有让我在我指定的分隔符上拆分值

import subprocess
from subprocess import check_output

def RunFPing(command):
    output = check_output(command.split(" "))
    output = str(output).split(" : ")
    return output

print RunFPing("fping -C 1 -q 192.168.1.25")

我得到的输出是:

10.1.30.10 : 29.00
['']

1 个答案:

答案 0 :(得分:2)

看起来fping正在写给stderr。要使用check_output捕获stderr和stdout输出,请使用

output = check_output(command.split(" "),stderr=subprocess.STDOUT)

请参阅https://docs.python.org/2/library/subprocess.html#subprocess.check_output

在您的代码中

#!/usr/bin/env python
import subprocess
from subprocess import check_output

def RunFPing(command):
    output = check_output(command.split(" "),stderr=subprocess.STDOUT))
    output = str(output).split(" : ")
    return output

if __name__ == "__main__":
    print RunFPing("fping -C 1 -q 192.168.1.25")

将导致

192.168.1.25 : 0.04
['192.168.1.25', '0.04\n']