首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找网络信息

查找网络信息
EN

Stack Overflow用户
提问于 2018-03-05 02:24:59
回答 1查看 270关注 0票数 0

我尝试用Python查找我的计算机的网络信息,我使用psutil。我得到的结果如下:

代码语言:javascript
复制
{'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是我唯一得到的东西:

代码语言:javascript
复制
def NETWORK():
netinfo = psutil.net_if_addrs()
for connection_name in netinfo :
    print connection_name

结果是:

代码语言:javascript
复制
Local Area Connection* 2
Ethernet
Wi-Fi
Local Area Connection* 4
Loopback Pseudo-Interface 1
None

我尝试通过这种方式访问这些键的值,但没有成功:

代码语言:javascript
复制
print netinfo['address']
print connection_name['address']
print connection_name.address()

请告诉我如何访问此dict并获取连接名称和相应的ip、网络掩码、mac地址。非常感谢

EN

回答 1

Stack Overflow用户

发布于 2018-03-05 02:40:04

它是dict格式的输出。因此,您需要通过key访问这些值。

当你运行这个命令时,你会得到'en0‘,'en1’等作为关键字。

代码语言:javascript
复制
>>> out = psutil.net_if_addrs()

将会有一个判决。因此,为了获取'en0‘的信息,请使用

代码语言:javascript
复制
>>>out['en0']

这将提供snic对象的列表。您可以遍历它们并获取数据,如下所示

代码语言:javascript
复制
>>> for a in out['en0']:
...     print(a.address)

这将给出不同的地址。要访问其他关键信息,请使用a.netmask

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49098810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档