📜  用于检查给定字符串是 IPv4 或 IPv6 还是无效的Python程序(1)

📅  最后修改于: 2023-12-03 15:11:17.470000             🧑  作者: Mango

用于检查给定字符串是 IPv4 或 IPv6 还是无效的Python程序

在网络应用程序开发中,处理 IP 地址是非常常见的任务。本文将介绍如何使用 Python 编写一个函数,用于检查给定字符串是 IPv4 或 IPv6 还是无效的。

IPv4 和 IPv6 的基本知识

IPv4 是 Internet 协议版本 4,是目前互联网中最常用的协议。IPv4 地址由 32 位二进制数组成,通常用点分十进制表示,例如 192.168.1.1。

IPv6 是 Internet 协议版本 6,是 IPv4 的后继者。IPv6 地址由 128 位二进制数组成,通常用冒号分隔的十六进制表示,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。

Python 的 ipaddress 模块

Python 内置了一个 ipaddress 模块,用于处理 IPv4 和 IPv6 地址,可以使用该模块中的函数快速地检查给定的字符串是 IPv4 还是 IPv6。

下面是一个简单的示例代码,用于检查给定的字符串是否是合法的 IPv4 或 IPv6 地址:

import ipaddress

def check_ip_address(ip):
    try:
        ipaddress.ip_address(ip)
        return True
    except ValueError:
        return False

上述代码中,我们使用了 ipaddress 模块中的 ip_address 函数来检查给定的字符串是否是 IP 地址。如果字符串是合法的 IPv4 或 IPv6 地址,则返回 True;否则返回 False。我们使用了 try...except 结构来捕捉 ValueError 异常,因为当字符串不是合法的 IPv4 或 IPv6 地址时,ip_address 函数会抛出该异常。

完整代码

下面是一个完整的 Python 程序,用于实现上述功能,包括了无效的字符串输入:

import ipaddress

def check_ip_address(ip):
    try:
        ipaddress.ip_address(ip)
        return True
    except ValueError:
        return False

print(check_ip_address("192.168.1.1")) # True
print(check_ip_address("2001:0db8:85a3:0000:0000:8a2e:0370:7334")) # True
print(check_ip_address("invalid")) # False
总结

本文介绍了如何使用 Python 中的 ipaddress 模块来检查给定的字符串是 IPv4 或 IPv6 还是无效的。使用该模块可以方便地实现对 IP 地址的处理,避免手动解析 IP 地址的麻烦。