【问题描述】使用Python如何获取ping命令的返回数据呢?

【小千解答】使用subprocess模块的Popen类调用ping.exe命令传参。
代码如下:
import subprocess as sp
def ping_result(ipaddr):
p = sp.Popen(['ping.exe',ipaddr],
stdin=sp.PIPE,stdout=sp.PIPE,stderr=sp.PIPE,
shell=True)
return p.stdout.read().decode('gbk')
xqdata = ping_result('192.168.1.17')
print(xqdata)
print('-' * 20)
print('ping通了' if 'TTL' in xqdata else 'ping不通')运行结果:

【知识拓展】
ping是一个独立的程序文件,可以直接调用运行,不需要间接使用cmd.exe ping ip的方式。

cmd命令行的编码格式是gbk,所以ping返回的数据要进行相应转码才能正常显示。


【参考资料】