Python - IP地址

本文介绍Python的ipaddress模块,详细讲解如何验证、比较和操作IPv4及IPv6地址,包括地址验证、类型检查、地址算术和逻辑比较等功能。

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

IP地址(Internet协议)是一种基本的网络概念,可在网络中提供地址分配功能。python模块ipaddress广泛用于验证IP地址到IPV4和IPV6类型并将其分类。它还可以用于比较IP地址值以及用于操作ip地址的IP地址算法。

验证IPV4地址
ip_address函数验证IPV4地址。如果值的范围超过0到255,则会引发错误。

import ipaddress
print(ipaddress.ip_address('192.168.0.255'))
print(ipaddress.ip_address('192.168.0.256'))#此处会报错,超过255

验证IPV6地址
ip_address函数验证IPV6地址。如果值的范围超出0到ffff,则会引发错误。

import ipaddress

# invalid IPV6 address
print(ipaddress.ip_address('FFFF:9999:2:FDE:257:0:2FAE:112D'))

print(ipaddress.ip_address('FFFF:10000:2:FDE:257:0:2FAE:112D'))#此地址不为ipv6

检查IP地址的类型
我们可以提供各种格式的IP地址,模块将能够识别有效格式。它还将指出它是哪种IP地址。

import ipaddress

print(type(ipaddress.ip_address(u'192.168.0.255')))

print(type(ipaddress.ip_address(u'2001:db8::')))

print(ipaddress.ip_address(u'192.168.0.255').reverse_pointer)

print(ipaddress.ip_network(u'192.168.0.0/28'))
-------------------------
<class 'ipaddress.IPv4Address'>
<class 'ipaddress.IPv6Address'>
255.0.168.192.in-addr.arpa
192.168.0.0/28

IP地址的比较
我们可以对IP地址进行逻辑比较,发现它们是否相等。我们还可以比较一个IP地址是否大于另一个IP地址的值。

import ipaddress

print(ipaddress.IPv4Address('192.168.0.2') > ipaddress.IPv4Address('192.168.0.1'))
print(ipaddress.IPv4Address('192.168.0.2') == ipaddress.IPv4Address('192.168.0.1'))
print(ipaddress.IPv4Address('192.168.0.2') != ipaddress.IPv4Address('192.168.0.1'))
-------------------
True
False
True

IP地址算术
我们还可以应用算术运算来操作IP地址。我们可以将整数加到或减去IP地址。如果在添加之后,最后一个八位字节的值超过255,则前一个八位字节增加以适应该值。如果额外值不能被任何前一个八位字节吸收,则会引发值错误。

import ipaddress

print(ipaddress.IPv4Address(u'192.168.0.2') + 1)

print(ipaddress.IPv4Address(u'192.168.0.253') - 3)

# Increases the previous octet by value 1.
print(ipaddress.IPv4Address(u'192.168.10.253') + 3)

# Throws Value error
print(ipaddress.IPv4Address(u'255.255.255.255') + 1)
-----------------------------
192.168.0.3
192.168.0.250
后面两个超过范围会报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值