今天想做一个小程序,在托盘处显示当前已连接的WiFi的名称(SSID),本以为python无所不能,大概也就一两行库搞定的事,却发现现有的pywifi、wifi、wifi-tools等库居然都没有显示当前连接的SSID的功能!真是令人诧异。于是只好另辟蹊径了。
在树莓派的论坛里找到这么一个帖子:
https://www.raspberrypi.org/forums/viewtopic.php?p=489161
说的是使用subprocess库,通过管道连接获取其它程序的输出。结果保存在一个list列表中,通过对列表的读取来找到ssid。但是要改成Windows可用的却有些麻烦,因为在Windows中,查看当前WLAN连接情况的命令为
netsh WLAN show interfaces
输出的界面为:
输出的结果很长,直接采用列表十分麻烦,只好采用一种委婉的方法:批处理来解决。
通过netsh命令的输出,可以知道:在“SSID”一行冒号后面的就是SSID。因此步骤如下:
1. 将以下文字保存为showSSID.cmd
@echo off
set x=None
@for /f "tokens=1,2,3" %%i in ('netsh WLAN show interfaces') do (
if [%%i]==[SSID] set x=%%k
)
echo %x%
这样,在命令提示符中输入“showSSID”即可显示当前连接的WiFi名称。
2.在python脚本中加入以下文字:
from subprocess import check_output
scanoutput = check_output([r"showssid.cmd"]) #最好使用完整路径
x=scanoutput.decode()
currentSSID=x[2:-2]
这样,在python中就可以得到WiFi名称了。得到WiFi名称之后的事情不属于本文讨论范围。
虽然使用的方法很奇怪,但是还是完成了任务,不是吗?
领取专属 10元无门槛券
私享最新 技术干货