我在使用该方法时遇到困难ipaddress.collapse_addresses()。
# n is a list of 192.168.0.0/24 networks (1,2,3,4....etc)
def sumnet():
n = nlist()
for net in n:
snet = ipaddress.collapse_addresses(net)
return snet
Run Code Online (Sandbox Code Playgroud)
我只取回原始列表:
Collapsed Networks
[IPv4Network('192.168.0.0/24'), IPv4Network('192.168.1.0/24'),
IPv4Network('192.168.2.0/24'), IPv4Network('192.168.3.0/24'),
IPv4Network('192.168.4.0/24'), IPv4Network('192.168.5.0/24'),
IPv4Network('192.168.6.0/24'), IPv4Network('192.168.7.0/24'),
IPv4Network('192.168.8.0/24')]
Run Code Online (Sandbox Code Playgroud)
假设您的输入是来自 ipaddress 的 IPv4Networks 列表,例如...
netlist = [ipaddress.IPv4Network('192.168.0.0/24'),
ipaddress.IPv4Network('192.168.1.0/24'),
ipaddress.IPv4Network('192.168.2.0/24'),
ipaddress.IPv4Network('192.168.3.0/24'),
ipaddress.IPv4Network('192.168.4.0/24'),
ipaddress.IPv4Network('192.168.5.0/24'),
ipaddress.IPv4Network('192.168.6.0/24'),
ipaddress.IPv4Network('192.168.7.0/24'),
ipaddress.IPv4Network('192.168.8.0/24')]
Run Code Online (Sandbox Code Playgroud)
你想要的输出是
[IPv4Network('192.168.0.0/21'), IPv4Network('192.168.8.0/24')]
Run Code Online (Sandbox Code Playgroud)
所有这一切都可以通过...来完成
import ipaddress
def sumnet(netlist):
return list(ipaddress.collapse_addresses(netlist))
netlist = [ipaddress.IPv4Network('192.168.0.0/24'),
ipaddress.IPv4Network('192.168.1.0/24'),
ipaddress.IPv4Network('192.168.2.0/24'),
ipaddress.IPv4Network('192.168.3.0/24'),
ipaddress.IPv4Network('192.168.4.0/24'),
ipaddress.IPv4Network('192.168.5.0/24'),
ipaddress.IPv4Network('192.168.6.0/24'),
ipaddress.IPv4Network('192.168.7.0/24'),
ipaddress.IPv4Network('192.168.8.0/24')]
print(sumnet(netlist))
Run Code Online (Sandbox Code Playgroud)
该collapse_addresses方法实际上获取整个地址列表,您不必一一向其提供 ip_addresses。它将返回崩溃网络的生成器,但您可以将其转换为列表以更轻松地处理它。
如果这不是您想要实现的目标,请告诉我。
确切地理解你的代码应该做什么有点困难,因为下面的代码片段启动了一个 for 循环,它获取第一个 ip 地址,将其折叠到一个生成器中,并返回带有该单个 ip 地址的生成器,而不查看任何其他IP地址。然而,这似乎与您的问题声称的输出不一致。
for net in n:
snet = ipaddress.collapse_addresses(net)
return snet
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |