是的,有
ipaddr模块,可以帮助您检查字符串是否为IPv4 / IPv6地址并检测其版本。
import ipaddrimport systry: 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 sockettry: socket.inet_aton(addr) print "ipv4 address"except socket.error: print "not ipv4 address"
对于IPv6地址,必须使用
socket.inet_pton(socket.AF_INET6, address)。
我还要指出的是,这
inet_aton将尝试转换(并真正将其转换为)类似的地址
10,
127等等,这些看起来都不像IP地址。



