python - 在Windows中正确获取MAC地址

ori*_*ari 5 python mac-address python-2.6

我正在使用Windows 7和Python 2.6.我想获得我的网络接口的MAC地址.


我尝试过使用该wmi模块:

def get_mac_address():

    c = wmi.WMI ()
    for interface in c.Win32_NetworkAdapterConfiguration (IPEnabled=1):
        return  interface.MACAddress
Run Code Online (Sandbox Code Playgroud)

但是,没有互联网连接时执行时遇到问题.


我尝试过使用该uuid模块:

from uuid import getnode 
print getnode()
Run Code Online (Sandbox Code Playgroud)

但是,返回值是MAC地址的48字节表示

66610803803052
Run Code Online (Sandbox Code Playgroud)

1)我应该如何将给定的数字转换为ff:ff:ff:ff:ff:ff格式?
2)有更好的方法来获取MAC地址吗?

lqh*_*gbl 7

尝试使用Python 2:

import uuid

def get_mac():
  mac_num = hex(uuid.getnode()).replace('0x', '').upper()
  mac = '-'.join(mac_num[i : i + 2] for i in range(0, 11, 2))
  return mac

print get_mac()
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Python 3,请尝试以下操作:

import uuid

def get_mac():
  mac_num = hex(uuid.getnode()).replace('0x', '').upper()
  mac = '-'.join(mac_num[i: i + 2] for i in range(0, 11, 2))
  return mac

print (get_mac())
Run Code Online (Sandbox Code Playgroud)


mat*_*yce 4

这有效:

>>> address = 1234567890
>>> h = iter(hex(address)[2:].zfill(12))
>>> ":".join(i + next(h) for i in h)
'00:00:49:96:02:d2'
Run Code Online (Sandbox Code Playgroud)

或者:

>>> "".join(c + ":" if i % 2 else c for i, c in enumerate(hex(address)[2:].zfill(12)))[:-1]
'00:00:49:96:02:d2'
Run Code Online (Sandbox Code Playgroud)

或者:

>>> h = hex(address)[2:].zfill(12)
>>> ":".join(i + j for i, j in zip(h[::2], h[1::2]))
'00:00:49:96:02:d2'
Run Code Online (Sandbox Code Playgroud)

首先将数字转换为十六进制,将其填充为 12 个字符,然后将其转换为一系列两个字符字符串,然后用冒号将它们连接起来。然而,这取决于 MAC 查找方法的准确性。