python获取已连接WiFi的名称

今天想做一个小程序,在托盘处显示当前已连接的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名称之后的事情不属于本文讨论范围。

虽然使用的方法很奇怪,但是还是完成了任务,不是吗?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180910G152BB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券