如何提取ping命令返回结果中的平均往返毫秒时间?
提取平均Ping时间的实现方案
直接通过字节流解码+正则匹配就能精准提取平均Ping时间,以下是完整可运行的代码示例:
import subprocess import re # 执行ping命令 result = subprocess.run(['ping', '8.8.8.8'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) # 先确认ping命令执行成功 if result.returncode == 0: # 将字节类型的stdout解码为字符串(Windows用gbk,Linux/macOS用utf-8) stdout_content = result.stdout.decode('gbk') # 正则匹配"Average = Xms"格式,捕获数字部分 avg_match = re.search(r'Average = (\d+)ms', stdout_content) if avg_match: average_ping = avg_match.group(1) print(f"平均Ping时间:{average_ping}ms") else: print("未找到平均Ping时间") else: print(f"Ping执行失败:{result.stderr.decode('gbk')}")
核心逻辑说明:
- 字节流解码:
subprocess返回的stdout是字节对象(b'...'),必须解码为字符串才能处理。注意Windows系统的ping输出默认用GBK编码,其他系统用UTF-8,按需调整。 - 正则精准匹配:用
re.search锁定Average = (\d+)ms模式,其中(\d+)是捕获组,专门提取数字部分——不管输出里的换行、空格怎么变,只要格式符合就能拿到结果,比字符串分割更可靠。 - 执行状态校验:先检查
returncode是否为0,确保ping命令成功执行后再处理结果,避免失败场景下的无效解析。
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

