gpt4 book ai didi

python - 检查有效 IPv4 和 IPv6 字符串的任何更好方法?

转载 作者:太空狗 更新时间:2023-10-30 00:54:50 27 4
gpt4 key购买 nike

我有以下任务:

仅使用默认模块识别字符串是否具有有效的 IPv4 或 IPv6 地址。我在这里找到了一个使用套接字模块的有趣方法:

import socket

ip = '10.1.0.10'
try:
# test for IPv4
socket.inet_pton(socket.AF_INET, ip)
except socket.error:
try:
# test for IPv6
socket.inet_pton(socket.AF_INET6, ip)
except socket.error:
print(ip, " is not valid")

这种情况下试一试似乎很难看,有没有更好的办法?考虑到我必须检查大约 100 个 IP,是否有不同的模块可以以更好的方式完成相同的任务。

最佳答案

您可以使用 ipaddress 模块。可在此处找到文档:https://docs.python.org/3/library/ipaddress.html

示例代码:

>>> ipaddress.ip_address('192.168.0.1')
IPv4Address('192.168.0.1')
>>> ipaddress.ip_address('2001:db8::')
IPv6Address('2001:db8::')
>>> ipaddress.ip_address('323.4.7.8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/ipaddress.py", line 54, in ip_address
address)
ValueError: '323.4.7.8' does not appear to be an IPv4 or IPv6 address
>>> ipaddress.ip_address('ffff::4543:1f1f::134')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/ipaddress.py", line 54, in ip_address
address)
ValueError: 'ffff::4543:1f1f::134' does not appear to be an IPv4 or IPv6 address

关于python - 检查有效 IPv4 和 IPv6 字符串的任何更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com