Python 解析 Wifi SSID 数据
我现在有以下内容。但是我发现如果一个SSID(无线网络名称)里面有空格,排序就会出问题:
import subprocess
import csv
process = subprocess.Popen(['/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport', '-s'], stdout=subprocess.PIPE)
stdout, stderr = process.communicate()
reader = csv.DictReader(stdout.decode('ascii').splitlines(),
delimiter=' ', skipinitialspace=True,
fieldnames=['wifi_name', 'mac', 'strength'])
for row in reader:
print(row)
我的目标是把SSID、MAC地址和信号强度存起来,这样就可以和一个电子表格进行比较。
1 个回答
5
来自 airport --help
的信息:
-x --xml Print info as XML
这将以苹果的XML格式输出属性列表的信息,这种格式应该更容易被解析。Python 甚至自带一个 plistlib
模块,可以把这个XML解析成Python字典:
#!/usr/bin/env python
from subprocess import Popen, PIPE
from plistlib import readPlist
from pprint import pprint
AirportPath = '/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport'
proc = Popen([AirportPath, '-s', '-x'], stdout=PIPE)
ssid_data = readPlist(proc.stdout)
pprint(ssid_data)