- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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')
尝试使用子网选项,但顾名思义,它将为您提供当前网络内的子网
In [34]: network = ipaddress.ip_network('10.1.0.0/16')
In [35]: network.subnets()
但是我们的要求是获取下一个网络地址(最好没有任何字符串操作)
最佳答案
图书馆ipcalc有一些例程可以使 IP 地址的数学计算变得相当容易。作为示例,可以使用迭代器来获取下一个网络范围地址:
代码:
import ipcalc
import itertools as it
network = ipcalc.Network('10.1.0.0/16')
network_addrs = (network + (i + 1) * network.size() for i in it.count())
测试代码:
print(next(network_addrs))
print(next(network_addrs))
print(next(network_addrs))
结果:
10.2.0.0/16
10.3.0.0/16
10.4.0.0/16
仅限标准库:
如果最好不要安装ipcalc
,则可以构造一个继承自ipaddress.IPv4Network
的类。
import ipaddress
class BetterIPv4Network(ipaddress.IPv4Network):
def __add__(self, offset):
"""Add numeric offset to the IP."""
new_base_addr = int(self.network_address) + offset
return self.__class__((new_base_addr, str(self.netmask)))
def size(self):
"""Return network size."""
start = int(self.network_address)
return int(self.broadcast_address) + 1 - start
用法:
import itertools as it
network = BetterIPv4Network(u'10.1.0.0/16')
network_addrs = (network + (i + 1) * network.size() for i in it.count())
Python 3.4:
Python 3.4 不接受元组来初始化ipaddress.IPv4Network
。此代码将解决这个问题。
class BetterIPv4Network(ipaddress.IPv4Network):
def __add__(self, offset):
"""Add numeric offset to the IP."""
new_base_addr = int(self.network_address) + offset
new_base_addr_str = str(self.__class__(new_base_addr)).split('/')[0]
return self.__class__(new_base_addr_str + '/' + str(self.netmask))
def size(self):
"""Return network size."""
start = int(self.network_address)
return int(self.broadcast_address) + 1 - start
关于python - 如何在python中给定起始网络地址获取下一个网络地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42451187/
我在尝试生成具有“价格”轴和“量”轴的图表时遇到问题,类似于 example given 中的图表。在 Highstock 网站上。它可以很好地显示成交量轴,但不能显示价格。 在尝试确定问题的原因时,
起始 - HTML
在我的 HTML 项目中,我试图提及 标签。但是,VS Code 将其解释为实际的 标签,它会导致奇怪的事情发生。有人有办法解决这个问题吗?预先感谢您! 最佳答案 使用<代替 . 顺便说一下,使
起始 - HTML
在我的 HTML 项目中,我试图提及 标签。但是,VS Code 将其解释为实际的 标签,它会导致奇怪的事情发生。有人有办法解决这个问题吗?预先感谢您! 最佳答案 使用<代替 . 顺便说一下,使
The allocation function attempts to allocate the requested amount of storage. If it is successful, i
这是我的Program.cs: public static void Main(string[] args) { var host = new WebHostBuilder()
我希望我的应用程序独立于操作系统。因此,我的 config.properties 和日志文件存储在资源文件夹中,我通过相对路径获取这些资源。这是我的项目结构。 这是我的 AppConfig 类: pu
(前言:这是我在 Stack Overflow 上提出的第一个与音频相关的问题,因此我会尽力用最好的措辞来表达。欢迎编辑。) 我正在创建一个允许用户循环播放音乐的应用程序。目前,我们的原型(proto
我有一个 Pandas DataFrame,我想将其用作 Scrapy Start URL,函数 get_links 打开一个到 DataFrame 的 xlsx,其中有一个我想在其上运行蜘蛛的 Co
我有几个大的 DTD 文件。我用过 trang将它们转换为 XSD 文件,这样我就可以轻松地从 JAXB 和其他实用程序中使用它。但是,生成的 XSD 文件的所有声明元素都位于顶层。这意味着任何元素都
是否有任何工具可以将文件从给定的起始偏移量复制到给定的(结束)偏移量。我还想通过运行 md5sum 确认该工具已正确复制指定的字节。像这样的东西 1) Copy source file star
所以,我有一个程序,我可以使用 Path2D 对象将形状添加到 JPanel,然后我可以单击并拖动它们。我想要做的是能够找到药物后形状的最终 X 和 Y 坐标。坐标必须是左上角坐标。有什么想法吗? /
我是一名优秀的程序员,十分优秀!