我想編譯一個蘋果設備將具有的所有MAC地址的列表。 oui.txt
告訴我蘋果已經分配了77個MAC範圍使用。這些範圍的形式如下:我的Python for循環導致MemoryError。我怎樣才能優化這個?
00:00:00
00:11:11
etc...
這給我留下最後三個十六進制數字來追加。那是16^6
。共有1291845632個蘋果MAC地址。
我遇到的問題是編寫一個程序來創建這些MAC地址的列表。這裏是我當前的代碼:
import re
apple_mac_range = []
apple_macs = []
# Parse the HTML of http://standards.ieee.org/cgi-bin/ouisearch to get the MACs
with open('apple mac list', 'r') as f:
for line in f.readlines():
match = re.search(r'[\w\d]{2}-[\w\d]{2}-[\w\d]{2}', line)
if match:
apple_mac_range.append(match.group().split('-'))
for mac in apple_mac_range:
for i in range(1, 1291845633):
print i
這給了我MemoryError
...我如何優化呢?
爲什麼你要生成所有這些MAC地址的完整列表? – 2010-12-10 02:20:00
爲什麼你需要枚舉超過10億個地址?你真的想要解決什麼問題? – SingleNegationElimination 2010-12-10 02:21:32