在python中有没有一种方法可以从给定的起始网络地址中获取下一个网络地址。使用ipaddress
模块可以获得下一个主机IP,但是有没有办法获得下一个网络本身?在
例如,如果我的起始网络地址10.1.0.0/16
,那么在每次迭代中,我都希望得到下一个网络地址10.2.0.0/16
,10.3.0.0/16
等等。在
因此,在10.1.0.0/16
的情况下,网络部分是前两个八位字节(10.1),其余部分是主机部分。我希望在每次迭代中单独增加网络部分,保持主机部分不变,例如:
start_network = ipaddress.ip_network('10.1.0.0/16')
# Now on each iteration I want the below output
In [37]: next(start_network)
Out[37]: IPv4Network('10.2.0.0/16')
In [38]: next(start_network)
Out[38]: IPv4Network('10.3.0.0/16')
尝试使用子网选项,但顾名思义,它将为您提供当前网络中的子网络
^{pr2}$但我们的要求是获得下一个网络地址(最好不进行任何字符串操作)
库ipcalc有一些例程可以使计算ip地址相当容易。例如,获取下一个网络范围地址的迭代器可以如下操作:
代码:
测试代码:
^{pr2}$结果:
仅标准库:
如果不安装
ipcalc
,那么可以构造继承自ipaddress.IPv4Network
的类。在用法:
Python3.4:
Python3.4不接受初始化
ipaddress.IPv4Network
的元组。这个代码可以解决这个问题。在相关问题 更多 >
编程相关推荐