python如何获取网卡的物理地址,也就是mac地址。可以调用系统命令然后配合re正则模块获取,这个不推荐这样使用。如果您只有一张网卡,那么最简单的办法是这样。
例如:
>>> import uuid
>>> address = hex(uuid.getnode())[2:]
>>> '-'.join(address[i:i+2] for i in range(0, len(address), 2))
'50-56-c0-00-08-L'

但是正常情况一般我们不止只有一块网卡。那么最好的办法是使用psutil模块。psutil是一个很有用的模块,它基本可以查询所有系统的基础信息,使用简单,功能丰富。psutil模块不在python的基础库,所以使用之前需要安装。
使用举例:
>>> import psutil
>>> psutil.net_if_addrs()
{'lo': [snicaddr(family=, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None),
snicaddr(family=, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),
snicaddr(family=, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)],
'wlan0': [snicaddr(family=, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None),
snicaddr(family=, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),
snicaddr(family=, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}
psutil的net_if_addrs方法可以以字典的形式返回系统上安装的每个网卡相关的地址。该字典的键是网卡NIC名称,值是分配给NIC地址的命名元组列表。每个元组包含5个字段:
family:地址族,即AF_INET或AF_INET6或psutil.AF_LINK,它是指MAC地址。
address:主NIC地址。
netmask:掩码地址,可以为None。
broadcast:广播地址,可以为None。
ptp:字面意思代表点对点,它是点对点接口(通常是VPN)上的目标地址。 广播和ptp是互斥的, 可以为None。
知道这个方法的使用和返回后,获取mac地址的python代码就很好写了。
import psutil
def get_net_addr():
macdict = dict()
dic = psutil.net_if_addrs()
for adapter in dic:
sniclist = dic[adapter]
for snic in sniclist:
if '-' in snic.address and len(snic.address)==17:
# print adapter, snic.address
macdict[adapter] = snic.address
return macdict
print(get_net_addr())
示例图

正文完
微信搜一搜“奇悦电脑科技”或扫描二维码关注我们



赞