2017-06-02 100 views
0

我一直在使用netifaces,沒有問題,但最近發生了一些變化。我不確定它是Windows 10的錯誤還是pythons或者netifaces本身。無論如何,這裏發生了什麼。提供異常輸出的Python netifaces

根據文檔代碼:

import netifaces 

netifaces.interfaces() 

應該給我類似這樣的結果:

['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0'] 

雖然在我的情況下,我得到的是:

['{E3EE4C5B-38D5-4E38-ABD3-912690B3333B}', '{07ED21E7-D11D-4FAE-BCAB-00748015A895}', '{9F401909-A4A5-4AB6-8617-DFA205446FC6}', '{073251CD-250D-4FAA-889A-560941A96782}', '{6613CF18-67E7-4499-8716-58EEC449E5C6}', '{C1568B39-575B-46B3-8EA7-95A7DBA33DD0}', '{F7F856C1-2EEE-4291-B42C-444C28D7C389}', '{2FD83117-396D-11E7-81F5-806E6F6E6963}'] 

在這一點我不知道我在處理什麼,接下來要做什麼選擇。但是,使用隨機的任何結果是這樣的:

netifaces.ifaddresses('{07ED21E7-D11D-4FAE-BCAB-00748015A895}') 

也返回某種「加密」的結果:

{-1000: [{'addr': 'fc:f8:ae:15:6f:0e'}], 23: [{'addr': 'fe80::ec58:f02f:37d0:598b%4', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128', 'broadcast': 'fe80::ec58:f02f:37d0:598b%4'}]} 

的相反,它在文檔呈現的方式(看起來更加用戶友好的,是不是?):

{18: [{'addr': ''}], 2: [{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}], 30: [{'peer': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'addr': '::1'}, {'peer': '', 'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::1%lo0'}]} 

有人可以解釋我,請問發生了什麼,以及如何「解密」這些結果?我試圖做的最後是獲得我的電腦正在使用的所有網絡接口的IP地址。

注:Python的3.6,Netifaces 0.10.5中,Windows 10

回答

1

['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']在unix系統網卡的名稱。在Windows上,您可以獲得網絡接口的GUID。 要獲得所謂的「友好名稱」,你可以查看Windows註冊表。檢查出this answer(在我的Python 2.7我不得不導入_winreg而不是winreg)。