Python指定IP格式作为输入
我正在写一个简单的客户端和服务器,想要加入一些简单的边界检查,以确保用户输入的IP地址格式是正确的,也就是像这样(int.int.int.int)。有没有人能给我一些建议,怎么才能做到这一点?目前我的代码只是接受这个值,如果不合法就会抛出操作系统错误。但我想要在这里阻止用户输入任何内容。
def ipEntered():
global ipEntered
ipEntered = input("Please enter the ip address of the server you wish to connect with:")
谢谢
1 个回答
2
使用ipaddress
模块(这个模块在Python 3.3中引入):
import ipaddress
def ipEntered():
while True:
try:
val = input("Please enter the ip address of the server you wish to connect with:")
return ipaddress.ip_address(val)
except ValueError:
print("Not a valid IP address")
这个模块可以接受IPv4地址,格式是像"100.200.30.40"
这样的四段数字,通常叫做点分十进制。同时,它也能处理IPv6地址,这种地址有两种写法:一种是长格式(由8组4个十六进制字符组成,中间用:
分隔),另一种是短格式。
如果你只想接受IPv4地址,可以使用return ipaddress.IPv4Address(val)
来实现。