用Python汇总非常长的IPv4地址列表
我有一份非常长的IPv4地址列表,大约有1.8万个地址,我想尽可能地把它们简化。例如:
119.195.74.210
119.196.154.2
119.196.247.223
119.197.20.186
119.199.160.107
119.199.160.32
119.199.160.33
119.199.160.34
119.199.160.54
119.199.160.55
最后应该变成这样:
119.195.74.210/32
119.196.154.2/32
119.196.247.223/32
119.197.20.186/32
119.199.160.107/32
119.199.160.32/31
119.199.160.34/32
119.199.160.54/31
速度很重要。
有什么建议吗?
1 个回答
2
我会使用 netaddr
这个模块。假设你有一个文本文件,里面存着一些IP地址,你的代码可能看起来像这样:
import sys
from netaddr import IPAddress, cidr_merge
fh = open (sys.argv[1], 'r')
iplist = list()
for addr in fh:
addr = IPAddress (addr.strip())
iplist.append (addr)
fh.close()
print cidr_merge (iplist)