【发布时间】:2019-12-08 10:28:04
【问题描述】:
在从 csv 文件创建 ipaddress/CIDR 列表,将 ipaddresses 转换为网络地址,然后通过从列表中创建一个集合(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,因为所有地址都与所有地址进行比较。有没有更好的办法来处理这种情况?
我已经尝试从我的工作列表中删除子网,这样它就不会被再次迭代,没有运气。
没有错误消息。我只是得到一个包含在我列表中更大子网中的子网。这会留下一个不必要的条目。
【问题讨论】:
标签: python-3.x subnet