ipy模块使用笔记:对于ip的操作

本文详细介绍了IPy模块的功能,包括判断IP类型、计算子网个数、反向解析IP、IP转换格式、生成网段、检查IP与网段的关系以及进行重叠网段判断。通过实例演示了每个功能的使用方法,适用于网络编程和IP地址管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、模块相关

下载:pip3 install IPy
描述:

这个模块能够处理IP的网段、网络掩码、广播地址、子网数、IP类型等

二、主要功能演示

1.判断IP类型:ipv4、ipv6

"""
判断IP类型,结果4为ipv4,6为ipv6,参数可以是ip也可以是网段
方法: version()
"""
from IPy import IP

print(IP('10.0.0.1').version()) # 4
print(IP('10.0.0.0/24').version()) # 4
print(IP('2409::1').version())  # 6

2.计算子网个数

"""
计算子网个数,参数同上
方法: len()
"""
from IPy import IP

print(IP('10.0.0.1').len())
print(IP('10.0.0.0/24').len())
print(IP('::1').len())
# 也可以这样写
print(len(IP('10.0.0.1')))

# 你也可以遍历网段的子网
ips = IP('10.0.0.0/31')
for ip in ips:
    print(ip)

3.反向解析IP

"""
反向解析IP,参数同上
方法:reverseName()
"""
from IPy import IP

# 反向解析地址格式
print(IP('10.0.0.1').reverseName())
print(IP('10.0.0.1/20').reverseName())
print(IP('2409:0:0:0:0:0:0:0/30').reverseName())

4.ip类型与转格式

"""
ip类型与转格式,参数同上
方法:iptype()、int()、strBin()、strHex()、strDec()
"""
from IPy import IP

# 判断ip类型
print(IP('10.0.0.1').iptype())

# 转格式
ip = IP('10.0.0.1')
print(ip.int()) # 转整型
print(ip.strDec())  # 转十进制,感觉跟int()差不多(*^▽^*)
print(ip.strHex())  # 转十六进制
print(ip.strBin())  # 转二进制
# 也可以将数值串转回IP
print(IP(0xc0a80132))  # 转回IP

5.生产网段

"""
根据IP与掩码生产网段格式和选择输出不同格式网段
方法:make_net()、strNormal()
"""
from IPy import IP

# 根据IP与掩码生产网段格式
print(IP('192.168.1.0').make_net('255.255.255.0'))

# 指定参数值返回不同类型的网段格式,0-3
print(IP('192.168.1.0/24').strNormal(0))
print(IP('192.168.1.0/24').strNormal(1))
print(IP('192.168.1.0/24').strNormal(2))
print(IP('192.168.1.0/24').strNormal(3))

6.判断IP是否在该网段、有重叠

"""
判断IP地址是否在该网段
"""
from IPy import IP

# 判断IP地址和网段是否包含在另一网段中
print('192.168.1.10' in IP('192.168.1.0/24'))
print(IP('192.168.1.10') in IP('192.168.1.0/24'))
print('2408:8774:1:16::B45F:E504' in IP('2408:8774::/32'))

# 判断是否两个网段有重叠
print(IP('192.168.1.0/24').overlaps('192.168.2.0/24'))

7.小练习

from IPy import IP

ips = IP("192.168.1.0/24")
if len(ips) > 1:
    print('net: %s' % ips.net())  # 输出网络地址
    print('netmask: %s' % ips.netmask())  # 子网掩码地址
    print('broadcast: %s' % ips.broadcast())  # 广播地址
    print('reverse address: %s' % ips.reverseNames()[0])  # 输出地址反向解析
    print('subnet: %s' % len(ips))  # 子网个数
else:
    print('reverse address: %s' % ips.reverseNames()[0]) #输出IP反向地址解析

print('hexadecimal: %s' % ips.strHex())  # ip转为16进制
print('binary ip: %s' % ips.strBin())  # ip转为2进制
print('iptype:%s' % ips.iptype())  # 输出地址类型

print()
print(len(ips))
print(ips[-1])
print(IP("192.168.1.0") in IP("192.168.1.0/24"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值