如何在python中从cmd shell获取ping输出而不停止脚本

时间:2014-08-22 07:38:58

标签: python-2.7

最近我花了几个小时才发现在运行此脚本时如何获得输出 ping = subprocess.check_output([“start”,“cmd.exe”,“/ k”,“ping”,“ - t”,SomeIP],shell = True)

我在互联网上找到的所有答案都建议使用communicte(),subprocess.call和其他不可用的命令,因为所有这些命令都迫使我停止脚本。

请帮帮我:) 我的python是2.7

1 个答案:

答案 0 :(得分:1)

另一个解决方案是将ping的结果保存到文件然后从中读取...

import subprocess, threading

class Ping(object):
    def __init__(self, host):
        self.host = host

    def ping(self):
        subprocess.call("ping %s > ping.txt" % self.host, shell = True)

    def getping(self):
        pingfile = open("ping.txt", "r")
        pingresults = pingfile.read()

        return pingresults

def main(host):
    ping = Ping(host)
    ping.ping()
    #startthread(ping.ping) if you want to execute code while pinging.

    print("Ping is " + ping.getping())

def startthread(method):
    threading.Thread(target = method).start()

main("127.0.0.1")

基本上,我只是执行cmd ping命令,在cmd ping命令中我使用了> ping.txt将结果保存到文件中。然后你只需从文件中读取并获得ping详细信息。请注意,如果要在执行自己的代码时执行ping,则可以启动一个线程。