在python中,很少有模块支持IP上的大量操作我希望获得基于CIDR传递的随机IP(v4或 v6),或者选择是否有办法做到这一点,我有试过" netaddr"和 ipaddress 模块?
>>> ip = IPNetwork('192.0.2.0/24')
>>> ip
IPNetwork('192.0.2.0/24')
>>> ip.ip
IPAddress('192.0.2.0')
>>> ip.network, ip.broadcast
我可以通过下面的方法得到一个列表,但问题是再次返回的列表可能很大并且可以吃掉完整的内存
/ 64个大量地址的前缀
>>list(IPv6Network("2001:db8:0:1::/125").hosts())
(IPAddress('192.0.2.0'), IPAddress('192.0.2.255'))
答案 0 :(得分:0)
import ipaddress
ips = ipaddress.ip_network('192.168.0.0/24')
for ip in ips: print(ip)
中的更多信息