Python 验证 IP 地址
IP 代表互联网协议,是分配给每台连接到互联网的计算机的唯一地址。 IP 地址有两个版本,即 IPv4 和 IPv6。
IPv4 采用点分十进制表示法,由 4 个八位位组组成,每个八位位组包含 0 到 255 之间的数字。 IPv6 地址包含 8 组,每组 4 个十六进制数字,每组代表 16 位。
冒号分隔组 (:)。 在本指南中,我们将验证 IPv4 地址。
在 Python 中验证 IP 地址
验证IP地址意味着检查输入的IP是否有效。
例如:
Input: 192.168.52.124
Output: Valid IP address
Input: 656.1.2.3
Output: Invalid IP address
使用 ipaddress 模块在 Python 中验证 IP 地址
ipaddress 是 Python 中的一个模块,用于根据 IP 地址的类型(IPv4 或 IPv6)对 IP 地址进行检查和分类。 它还执行不同的操作,例如算术运算、比较等。
该模块有一个名为 ip_address() 的方法,用于验证 IP 地址。 该函数以字符串IP作为输入,如果它能够成功地将字符串IP转换为IPv4或IPv6地址的对象,则意味着输入的IP地址是有效的。
否则,它将引发一个值错误,表明该 IP 似乎不是 IPv4 或 IPv6 地址。 我们在下面的代码中导入了 ipaddress 模块,并将整个代码写入了 try-except 块中。
如果 IP 有效,则不会引发异常,如果无效,则值错误异常将由 except 块处理。
情况 1:对于有效的 IP 地址
#Python 3.x
import ipaddress
try:
ip = ipaddress.ip_address("192.168.1.1")
print("Valid IP Address")
except ValueError:
print("Invalid IP Address")
输出:
#Python 3.x
Valid IP Address
情况 2:IP 地址无效
#Python 3.x
import ipaddress
try:
ip = ipaddress.ip_address("992.168.1.1")
print("Valid IP Address")
except ValueError:
print("Invalid IP Address")
输出:
#Python 3.x
Invalid IP Address
使用 RegEx.search() 方法在 Python 中验证 IP 地址
验证 IP 地址的另一种方法是通过正则表达式将其与有效 IP 地址的预定义模式进行匹配。 我们通过调用 re 模块的 search()
方法并传递正则表达式和 IP 作为参数,在以下代码中验证了 IP 地址。
如果 IP 有效,则此方法返回 True。 否则,返回 False。
示例代码:
#Python 3.x
import re
ip = "192.168.2.3"
regex = "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$"
if(re.search(regex, ip)):
print("Valid IP Address")
else:
print("Invalid IP Address")
输出:
#Python 3.x
Valid IP Address
在 Python 中手动验证 IP 地址
我们可以在没有任何内置库正则表达式的情况下验证 IP 地址。 我们创建了一个函数,通过检查以下代码中的这三个条件来验证 IP 地址。
如果代码中满足以下任一条件,则 IP 无效。
- 八位位组的数量不是四个。
- 任何八位字节都包含除整数以外的任何内容。
- 八位位组内的任何数字都在 0-255 范围之外。
示例代码:
#Python 3.x
def validate_ip_address(ip):
octects = ip.split(".")
if len(octects) != 4:
return "Invalid IP"
for number in octects:
if not isinstance(int(number), int):
return "Invalid IP"
if int(number) < 0 or int(number) > 255:
return "Invalid IP"
return "Valid IP"
validate_ip_address("192.168.-1.1")
输出:
#Python 3.x
'Invalid IP'
相关文章
Python 中的随机 IP 地址生成器
发布时间:2023/06/22 浏览次数:56 分类:Python
-
Python 提供了多个可用于打印随机 IP 地址的模块。 本教程将教您在 Python 中以字符串形式生成随机 IP 地址。使用 Faker 模块在 Python 中生成随机 IP 地址作为字符串
在 Python 中运行单元测试
发布时间:2023/06/22 浏览次数:138 分类:Python
-
在称为单元测试的软件开发过程中,检查应用程序中较小的、可独立测试的组件(称为单元)的功能。 Python unittest 模块允许我们运行单元测试。本文将讨论单元测试以及如何在 Python 中进行测
Python 单元测试发现
发布时间:2023/06/22 浏览次数:118 分类:Python
-
本文将向我们介绍单元测试以及如何针对特定代码段运行它。 我们将学习 discover 命令的用法来自动识别模块名称,以及为什么它在 Python 中可能不起作用。
Python 中的参数化单元测试
发布时间:2023/06/22 浏览次数:80 分类:Python
-
在 Python 中,我们可以使用参数化单元测试为每个项目或测试用例生成一个测试。 本文将探讨 Python 的参数化单元测试。Python 中参数化单元测试的目的 当开发人员编写单元测试时,他们通常采
Python Unittest 和 Pytest
发布时间:2023/06/22 浏览次数:107 分类:Python
-
这篇文章的主要目的是讨论Python中两个最常用的单元测试框架unittest和pytest,它们的优缺点以及在何时选择哪个框架。
Python 模拟类属性
发布时间:2023/06/22 浏览次数:161 分类:Python
-
本文的主要目的是演示如何使用 python 单元测试模块 unittest 操作类属性以进行测试和调试。模拟类属性的原因
Python 单元测试设置
发布时间:2023/06/22 浏览次数:127 分类:Python
-
在本文中,我们将讨论什么是单元测试和 Python 单元测试框架。 我们还讨论了如何使用 setUp() 函数进行单元测试以及示例。
Python rsync 同步
发布时间:2023/06/22 浏览次数:129 分类:Python
-
本文将探讨 rsync 以及我们如何从 Python 脚本中使用它。Python同步如上所述,rsync 是一个强大的工具
Python Deque Peek 介绍
发布时间:2023/06/22 浏览次数:198 分类:Python
-
本文演示了如何在 Python 中查看/检查双端队列(双端队列)前面的元素,而无需将它们从双端队列中删除。Python Deque Peek 概述