IPv6地址Python

IPv6地址Python,python,ip-address,ipv6,ipv4,Python,Ip Address,Ipv6,Ipv4,我的IPv6地址等于“2001:200:e000::/35”。 但是,我无法在库ipaddress中的函数ip_address()上输入它。 该函数适用于不包含“/”的地址,如IPv4“1.0.0.0”和IPv6“2001:12f8:0:17::23”: 返回: IPv4Address(u'1.0.0.0') IPv6Address(u'2001:12f8:0:17::23') Traceback (most recent call last): File "<stdin>"

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

返回:

IPv4Address(u'1.0.0.0')
IPv6Address(u'2001:12f8:0:17::23')
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

返回:

IPv4Address(u'1.0.0.0')
IPv6Address(u'2001:12f8:0:17::23')
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
但是,当我在IPv6“2001:200:e000::/35”中尝试时

返回:

IPv4Address(u'1.0.0.0')
IPv6Address(u'2001:12f8:0:17::23')
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
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/dist packages/ipaddress.py”,第168行,位于ip_地址中
(地址)
ValueError:u'2001:200:e000::/35'似乎不是IPv4或IPv6地址
我应该如何将包含“/”的IP地址输入到IP地址?

“包含/在其中的IP地址”实际上不是IP地址。它们是IP网络(表示一系列IP地址),称为“CIDR表示法”

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

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

我想你已经知道你正在尝试的那个地址不适合作为IPv6地址,但你还是想把它放进去?斜杠表示它不是一个地址,因为ip6/32实际上代表了65536个地址的范围。因此,它本身不是地址。值得注意的是,“IP地址/前缀长度”通常用于表示地址和子网大小。与IPv4不同,“全零”主机部分指定网络地址,在IPv6
2001:db8::/64
(最后64位中的全零)是有效的主机地址和前缀。但是前缀大小为
/35
(如问题所述)将不是单个子网。