python - 检查IP地址版本的最快方法

标签 python python-2.7 ipv6 ipv4

我有一大组字符串,我已经知道它包含一个 IP 地址,并且我想确定它是 IPv4 还是 IPv6。目前我正在检查字符串是否包含冒号:

version = 4
if ':' in ip_string:
    version = 6

考虑到我们已经知道它是一个 IP 地址,是否有更快的方法来确定 IP 版本。上述简单检查是否有可能返回错误结果(例如是否可能有不带冒号的 IPv6 地址)?

最佳答案

在python中使用ipaddress来检查版本。 下面是示例-

import ipaddress
#str1='10.10.10.2/24'
str1 = '2b11::327a:7b00/120'
[address, netmask] = str1.split('/')
ip_ver = ipaddress.ip_address(str(address))
if ip_ver.version == 4:
    print('IPv4')
else:
    print('IPv6')

输出:

IPv6

注意:在 Python 3.7.2 中测试

关于python - 检查IP地址版本的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761982/

相关文章:

python - Scrapy:从 python 脚本运行蜘蛛并等待它执行结束

Python-将带有特殊字符的字符串转换为字节

python - Django - importError 在/博客。 (没有名为 urls 的模块)

Node.js IPv6 问题

java - JBoss 7.1.1 上的 Jesey 客户端抛出 java.net.SocketException : Protocol family unavailable for IPv6 address

amazon-web-services - IPV6 Web 服务器无法访问

Python初学者输入法和不同的选择

Python-按名称从列表中删除元素的函数

python - 部署到 Elastic Beanstalk 时运行 Django 迁移

python - 覆盖 __dir__ 方法的正确方法是什么?