Python中IP范围到CIDR的转换?

Python中IP范围到CIDR的转换?,python,Python,在Python中,给定范围的起始和结束IP地址,如何获得表示IP地址范围的CIDR表示法?我可以找到CIDR到IP的范围,但找不到任何相反的代码 所需输出的示例: startip = '63.223.64.0' endip = '63.223.127.255' return '63.223.64.0/18' 您可以使用模块提供的iprange\u到\u CIDR。例如: pip安装netaddr 导入NetAddress cidrs=netaddr.iprange\u到\u cidrs(s

在Python中,给定范围的起始和结束IP地址,如何获得表示IP地址范围的CIDR表示法?我可以找到CIDR到IP的范围,但找不到任何相反的代码

所需输出的示例:

startip = '63.223.64.0'
endip = '63.223.127.255'

return '63.223.64.0/18'

您可以使用模块提供的
iprange\u到\u CIDR
。例如:

pip安装netaddr
导入NetAddress
cidrs=netaddr.iprange\u到\u cidrs(startip,endip)

以下是官方文档:

启动Python3.3捆绑包可以提供您想要的。该函数返回一个迭代器,该迭代器包含从您指定的起点、终点生成的网络:

>>> import ipaddress
>>> startip = ipaddress.IPv4Address('63.223.64.0')
>>> endip = ipaddress.IPv4Address('63.223.127.255')
>>> [ipaddr for ipaddr in ipaddress.summarize_address_range(startip, endip)]
[IPv4Network('63.223.64.0/18')]

cidrs=netaddr.ip_range_to_cidrs(ip1,ip2)AttributeError:“module”对象没有属性“ip_range_to_cidrs”@ChrisHall很抱歉输入错误,我已经更新了我的答案。以下是在Python3中的操作方法:从ipaddress导入ip_地址,总结_地址_range;开始,结束=ip地址(startip),ip地址(endip);返回summary_address_range(开始、结束)。整理@JJC对
python2.7的回答<代码>从ip地址导入ip地址,汇总地址范围;总结地址范围(ip地址(unicode(startip))、ip地址(unicode(endip)))
无外部依赖关系。爱死它了!对这应该是公认的答案。。尽管如此,还是很有帮助。。