我尝试用Python查找我的计算机的网络信息,我使用psutil。我得到的结果如下:
{'Local Area Connection* 2': [snic(family=-1, address='34-F3-9A-4C-D0-C5', netmask=None, broadcast=None, ptp=None), snic(family=2, address='169.254.189.147', netmask='255.255.0.0', broadcast=None, ptp=None), snic(family=23, address='fe80::b83c:382a:1976:bd93', netmask=None, broadcast=None, ptp=None)], 'Ethernet': [snic(family=-1, address='C8-5B-76-AC-B7-BC', netmask=None, broadcast=None, ptp=None), snic(family=2, address='10.164.200.11', netmask='255.255.255.0', broadcast=None, ptp=None), snic(family=23, address='fe80::28db:c0b:3d58:9aba', netmask=None, broadcast=None, ptp=None)], 'Wi-Fi': [snic(family=-1, address='34-F3-9A-4C-D0-C4', netmask=None, broadcast=None, ptp=None), snic(family=2, address='192.168.1.102', netmask='255.255.255.0', broadcast=None, ptp=None), snic(family=23, address='fe80::5c61:43a3:f2d6:c994', netmask=None, broadcast=None, ptp=None)], 'Local Area Connection* 4': [snic(family=-1, address='00-00-00-00-00-00-00-E0', netmask=None, broadcast=None, ptp=None), snic(family=23, address='2001:0:9d38:90d7:1093:131:3f57:fe99', netmask=None, broadcast=None, ptp=None), snic(family=23, address='fe80::1093:131:3f57:fe99', netmask=None, broadcast=None, ptp=None)], 'Loopback Pseudo-Interface 1': [snic(family=2, address='127.0.0.1', netmask='255.0.0.0', broadcast=None, ptp=None), snic(family=23, address='::1', netmask=None, broadcast=None, ptp=None)]}我尝试获取连接名称和相应的ip、网络掩码、mac地址。但是我拿不到。当我使用for循环时,这个dict的key是我唯一得到的东西:
def NETWORK():
netinfo = psutil.net_if_addrs()
for connection_name in netinfo :
print connection_name结果是:
Local Area Connection* 2
Ethernet
Wi-Fi
Local Area Connection* 4
Loopback Pseudo-Interface 1
None我尝试通过这种方式访问这些键的值,但没有成功:
print netinfo['address']
print connection_name['address']
print connection_name.address()请告诉我如何访问此dict并获取连接名称和相应的ip、网络掩码、mac地址。非常感谢
发布于 2018-03-05 02:40:04
它是dict格式的输出。因此,您需要通过key访问这些值。
当你运行这个命令时,你会得到'en0‘,'en1’等作为关键字。
>>> out = psutil.net_if_addrs()将会有一个判决。因此,为了获取'en0‘的信息,请使用
>>>out['en0']这将提供snic对象的列表。您可以遍历它们并获取数据,如下所示
>>> for a in out['en0']:
... print(a.address)这将给出不同的地址。要访问其他关键信息,请使用a.netmask
https://stackoverflow.com/questions/49098810
复制相似问题