如果网络地址是另一个网络的子网,则如何从列表中删除网络地址

时间:2019-07-31 00:33:44

标签: python-3.x subnet

从csv文件创建ipaddress / CIDR列表,将ipaddress转换为网络地址,然后通过从列表中创建一个集合(python 3.7)来消除重复项之后,我迭代并消除了所有另一个subnets_of()的子网子网,保留汇总或超级网地址。我使用ipaddress模块​​来完成这项工作。问题是,如果将子网与自身进行比较,它仍然算作子网。例如,

a = ipaddress.ip_network('192.168.0.0/24')
b = ipaddress.ip_network('192.168.0.0/24')
b.subnet_of(a)
True

因此,即使我的列表中有192.168.0.0/23,也仍添加/ 24,因为所有地址都与所有地址进行了比较。是否有更好的方法来处理这种情况?

我已经尝试从工作列表中删除该子网,这样它就不会被重复访问,不走运。

无错误消息。我只是得到一个包含在我列表中较大子网内的子网。这样就留下了不必要的条目。

1 个答案:

答案 0 :(得分:0)

您是否尝试过仅删除/之后的所有内容?