验证用户输入的IP是否有效的最佳方法是什么?它是以字符串形式出现的。
发布于 2008-11-25 23:50:54
不要解析它。直接问吧。
import socket
try:
socket.inet_aton(addr)
# legal
except socket.error:
# Not legal
发布于 2012-05-28 17:48:04
从Python3.4开始,检查IPv6或IPv4地址是否正确的最好方法是使用Python标准库模块ipaddress
- IPv4/IPv6操作库s.a.。https://docs.python.org/3/library/ipaddress.html获取完整的文档。
示例:
#!/usr/bin/env python
import ipaddress
import sys
try:
ip = ipaddress.ip_address(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])
其他版本: Github,phihag / Philipp Hagemeister,“Python3.3‘s ipaddress For older versions",https://github.com/phihag/ipaddress
phihag的backport是可用的,例如在Anaconda Python 2.7中&包含在安装程序中。s.a.https://docs.continuum.io/anaconda/pkg-docs
要使用pip进行安装:
pip install ipaddress
s.a.:IPv4地址1.0.17,"IPv4/IPv6操作库“,”3.3+ IPv4地址模块的端口“,https://pypi.python.org/pypi/ipaddress/1.0.17
发布于 2010-10-26 01:28:50
import socket
def is_valid_ipv4_address(address):
try:
socket.inet_pton(socket.AF_INET, address)
except AttributeError: # no inet_pton here, sorry
try:
socket.inet_aton(address)
except socket.error:
return False
return address.count('.') == 3
except socket.error: # not a valid address
return False
return True
def is_valid_ipv6_address(address):
try:
socket.inet_pton(socket.AF_INET6, address)
except socket.error: # not a valid address
return False
return True
https://stackoverflow.com/questions/319279
复制相似问题