Python 2.7 在Python中比较子网是否在IP范围内?

Python 2.7 在Python中比较子网是否在IP范围内?,python-2.7,comparison,ip-address,subnet,netmask,Python 2.7,Comparison,Ip Address,Subnet,Netmask,我在csv文件中有一组带有标签说明的子网。我需要将这些描述分配给这些子网在另一个csv文件中所属的数据探测范围 给定具有IP地址34.0.0.0和网络掩码255.255.0.0的子网, 我想检查子网是否在范围34.163.83.230-34.163.83.230 我考虑过从子网的ip和网络掩码创建一个范围,并将其与数据探测范围进行比较。我还没有弄清楚这是否能给出正确的答案 我不能使用最新版本的Python(这必须与运行Python 2.7的应用程序配合使用),因此ipaddress模块不是我的选

我在csv文件中有一组带有标签说明的子网。我需要将这些描述分配给这些子网在另一个csv文件中所属的数据探测范围

给定具有IP地址
34.0.0.0
和网络掩码
255.255.0.0
的子网,
我想检查子网是否在范围
34.163.83.230-34.163.83.230

我考虑过从子网的ip和网络掩码创建一个范围,并将其与数据探测范围进行比较。我还没有弄清楚这是否能给出正确的答案


我不能使用最新版本的Python(这必须与运行Python 2.7的应用程序配合使用),因此
ipaddress
模块不是我的选择

socket模块提供了
inet\u aton
,它可以将您的地址转换为位字符串。然后,您可以使用
struct.unpack
,使用
&
将它们转换为整数,并使用整数比较:

from socket import inet_aton
from struct import unpack

def atol(a):
    return unpack(">L", inet_aton(a))[0]

addr = atol("30.44.230.0")
mask = atol("255.255.0.0")
lo = atol("32.44.230.0")
hi = atol("32.44.230.255")
prefix = addr & mask

print lo <= prefix <= hi 
从套接字导入inet\u aton
从结构导入解包
def atol(a):
返回解包(“>L”,inet_aton(a))[0]
地址=atol(“30.44.230.0”)
掩码=atol(“255.255.0.0”)
lo=atol(“32.44.230.0”)
hi=atol(“32.44.230.255”)
前缀=地址和掩码

谢谢。我用这个来做我需要的比较。我只是想让其他人知道,这不是检查范围内子网的完整解决方案。