如何使用Python从netsh wlan show interface结果中提取SSID
提取netsh输出中的SSID及网络信息
你的现有代码已经能获取到命令输出,接下来可以通过字符串解析或正则表达式提取目标信息到变量中,以下是两种实用方案:
方案1:逐行分割解析(适配固定格式)
netsh的输出以键值对形式排列,我们可以遍历每行内容拆分出键和值:
import subprocess # 执行命令并获取输出 result = subprocess.run(['netsh', 'wlan', 'show', 'interface'], capture_output=True, text=True) output = result.stdout # 用字典存储提取到的网络信息 network_info = {} # 逐行处理输出内容 for line in output.splitlines(): # 跳过空行和无冒号的无效行 if ':' not in line: continue # 拆分键与值,strip()去除前后多余空格 key, value = line.split(':', 1) network_info[key.strip()] = value.strip() # 直接通过键名获取目标信息,设置默认值避免未找到时报错 ssid = network_info.get('SSID', '未连接WiFi') interface_name = network_info.get('Name', '未知接口') connection_state = network_info.get('State', '未知状态') print(f"当前SSID: {ssid}") print(f"接口名称: {interface_name}") print(f"连接状态: {connection_state}")
方案2:正则表达式匹配(适配格式小变动)
如果担心行分割的稳定性,用正则匹配键值对更灵活:
import subprocess import re result = subprocess.run(['netsh', 'wlan', 'show', 'interface'], capture_output=True, text=True) output = result.stdout # 匹配" 键名 : 值"格式的正则规则 pattern = re.compile(r'^\s*(.*?)\s*:\s*(.*)$', re.MULTILINE) matches = pattern.findall(output) # 将匹配结果转为字典 network_info = dict(matches) # 获取SSID信息 ssid = network_info.get('SSID', '未连接WiFi') print(f"当前SSID: {ssid}")
补充提示
- 若设备有多个WiFi接口,可将命令改为
['netsh', 'wlan', 'show', 'interfaces'](复数形式),再解析每个接口的块信息 - 未连接WiFi时,SSID字段会显示
未连接类内容,用get()方法设置默认值可避免KeyError
内容的提问来源于stack exchange,提问作者user348514
相关产品推荐
相关产品推荐

