python - 检查 IP 地址

标签 python ip ipv6

是否有任何现有的库可以将字符串解析为 ipv4 或 ipv6 地址,或者至少可以识别字符串是否是 IP 地址(无论哪种类型)?

最佳答案

是的,有ipaddr模块,可以帮助您检查字符串是否为IPv4/IPv6地址,并检测其版本。

import ipaddr
import sys

try:
   ip = ipaddr.IPAddress(sys.argv[1])
   print '%s is a correct IP%s address.' % (ip, ip.version)
except ValueError:
   print 'address/netmask is invalid: %s' % sys.argv[1]
except:
   print 'Usage : %s  ip' % sys.argv[0]

但这不是一个标准模块,所以并不总是可以使用它。 您还可以尝试使用标准的 socket 模块:

import socket

try:
    socket.inet_aton(addr)
    print "ipv4 address"
except socket.error:
    print "not ipv4 address"

对于 IPv6 地址,您必须使用 socket.inet_pton(socket.AF_INET6, address)

我还想指出,inet_aton 将尝试转换(并真正转换)地址,如 10127 等,看起来不像 IP 地址。

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

相关文章:

c++ - 初始化 union

python - 将 Tensorflow 数据集 API 与 Keras 结合使用时出现的问题

java - 实时验证 JTextField 的输入

azure - 有没有办法通过更改 IP 来挽救 Azure VM?

wordpress - 使用 htaccess 按用户主机名阻止请求

java - 强制 InetAddress.getHostAddress() 返回 IPv4 地址

java - 在 Java 中获取 Ipv6 完整格式

python - WrapSize 和滚动条 : widgets not drawn at startup won't draw later

python - 我无法根据对另一个模型的一对一字段引用中的字段进行过滤

python - 防止类在 Python 中直接实例化