我的 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/