python - IPv6 地址 Python

标签 python ip-address ipv6 ipv4

我的 IPv6 地址等于“2001:200:e000::/35”。 但是,我无法在库 ipaddress 的函数 ip_address() 上输入它。 该函数非常适合不包含“/”的地址,例如 IPv4“1.0.0.0”和 IPv6“2001:12f8:0:17::23”:

ipaddress.ip_address(unicode("1.0.0.0","utf-8"))

返回:

IPv4Address(u'1.0.0.0')

ipaddress.ip_address(unicode("2001:12f8:0:17::23","utf-8"))

返回:

IPv6Address(u'2001:12f8:0:17::23')

但是,当我尝试 IPv6“2001:200:e000::/35”时,

ipaddress.ip_address(unicode("2001:200:e000::/35","utf-8"))

返回:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/ipaddress.py", line 168, in ip_address
    address)
ValueError: u'2001:200:e000::/35' does not appear to be an IPv4 or IPv6 address

如何在 ip_address 中输入包含“/”的 IP 地址?

最佳答案

您所说的“带有/的 IP 地址”实际上并不是 IP 地址。它们是“CIDR 表示法”中的 IP 网络(表示 IP 地址范围)。

您可以使用ipaddress.ip_network()处理IP网络。例如:

>>> ipn = ipaddress.ip_network("2001:200:e000::/35")
>>> ipn.num_addresses
9903520314283042199192993792

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

相关文章:

python - 使用 itertools 获取 set python 的所有分区

firebase - 如何在Firebase云功能中获取客户端IP地址?

android - 如何在 Android 中使用 mDNS 从 ".local"解析 Ipv4 和 Ipv6

c++ - Windows 中编程级别的 IPv6

c - IPv6: connect() 总是失败,errno 22

python - 如何比较两个 Google Protocol Buffer 消息的内容是否相等?

python - 使用 sqlalchemy create_engine 配置查询/命令超时?

python - PIL Draw.text 和较低分辨率

linux - 我使用 IP1 的 ssh 登录到一台机器。登录后,ifconfig/'ip addr' 的输出显示 IP2。为什么IP1和IP2不同?

java - InetAddress获取IP不一致