gpt4 book ai didi

python - 访问 netifaces 词典的优雅方式

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:24 26 4
gpt4 key购买 nike

这可能听起来很愚蠢,但老实说我不知道​​如何做到正确。我现在已经在 Python 中闲逛了一段时间了。我想访问由netifaces(特定网卡的Mac地址)制作的字典,导入一个条目,然后将其打印为一个优雅的字符串。我很难找到优雅的方式来做到这一点。

这是我到目前为止所拥有的:

>>>import netifaces
>>>netifaces.ifaddress('en3')

我得到的 Mac 地址的正确值如下所示:

{18: [{'addr': '1a:00:00:f1:e5:b1'}]}

我只需要导入 Mac 地址部分(作为字符串),因此我尝试以某种优雅的方式获取它,但我能做的最好是:

>>>string = netifaces.ifaddress('en3')
>>>string[18]

我得到(如预期):

[{'addr': '1a:02:00:d1:e5:b1'}]

所以在这里我决定尝试一些严肃的 Inception 风格的编码,它本质上是有效的,但它绝对不优雅和简单......

>>>str=string[18]
>>>str[0]

所以我得到:

{'addr': '1a:00:00:f1:e5:b1'}

然后我做了:

>>>s=str[0]
>>>s['addr']

然后我(终于)得到了我的 Mac 地址...是否有任何优雅的方法可以获取该 Mac 地址而不使我的代码看起来像那样?

最佳答案

首先,不要将变量命名为 stringstr,因为现在您正在屏蔽内置的 Python 类型和模块,有一天这会困扰您。

其次,netiface.ifaddresses 返回的字典中的键是协议(protocol)号,并且 netifaces 模块中的每个键都有命名常量。因此,不要请求结果[17],而是请求结果[netifaces.AF_LINK]

您似乎在问是否必须将代码拆分为多行才能获得所需的值,答案是否定的,您可以一次完成所有操作。例如,获取接口(interface)的第一个 MAC 地址:

>>> import netifaces
>>> result = netifaces.ifaddresses('eth0')
>>> print result[netifaces.AF_LINK][0]['addr']
c8:5b:76:14:59:ee

或者甚至:

>>> result = netifaces.ifaddresses('eth0')[netifaces.AF_LINK][0]['addr']
>>> print result
c8:5b:76:14:59:ee

关于python - 访问 netifaces 词典的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43007215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com