这篇文章主要为大家展示了“Python中如何处理ipaddress网络地址”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中如何处理ipaddress网络地址”这篇文章吧。
一般来说,我们使用ipaddress库是通过ip_address()函数构建一个地址对象。它会返回一个IPv4Address或IPv6Address实例。实例如下:
import ipaddress import binascii addresses = [ '121.63.3.59', '2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b' ] for ip in addresses: address = ipaddress.ip_address(ip) print("IP地址:", address) print("IP Version:", address.version) print("是否是专用地址:", address.is_private) print("是否是公网地址:", address.is_global) print("是否是多播地址:", address.is_multicast) print("是否是环回地址:", address.is_loopback) print("是否是link-local保留:", address.is_link_local) print("判断地址是否未指定:", address.is_unspecified) print("IP地址16进制:", binascii.hexlify(address.packed))
运行之后,效果如下:
网络地址通常用一个基本地址和一个掩码表示,掩码指示地址的哪些部分表示网络,哪些部分表示该网络上的地址。可以显式的表示掩码,也可以使用一个前缀长度值来表示,示例如下:
import ipaddress addresses = [ '192.168.1.0/24', '2001:0db8:3c4d:0015::/64' ] for n in addresses: net = ipaddress.ip_network(n) print("是否是专用地址:", net.is_private) print("该网段的广播地址:", net.broadcast_address) print("IP地址与子网掩码:", net.compressed) print("掩码以二进制的格式展示:", net.with_netmask) print("以主机掩码格式展示:", net.with_hostmask) print("网络中的地址总数:", net.num_addresses) print()
运行之后,效果如下:
涉及IP地址与子网掩码以及广播地址等知识,读者可以参考《计算机网络》。
在IPv4的网络地址中,我们一般将其分为A,B,C类,上面我们提供的192.168.1.0是一个C类地址。学过网络的应该一眼就可以看出来其主机地址有254个,基地址为192.168.1.0,而广播地址为192.168.1.255。整体是256个。
因为这是C类地址,数学稍微好点的肯定手到擒来,但是我给你一个IPv6或者IPv4的A类地址,能口算出来多少的恐怕很少吧,而ipaddress库可以直接遍历打印,示例如下:
import ipaddress n = '192.168.1.0/24' net = ipaddress.ip_network(n) for ip in zip(net): print(ip)
运行之后,效果如下:
这里遍历迭代,列出了所有的地址。如果只列出可用的主机地址把zip(net)改为zip(net.hosts())即可(也就是去除了广播地址与基地址的其他地址)。
当然,如果你只是想确定一个地址是否在网络中,可以直接使用in进行判断。示例如下:
import ipaddress n = '192.168.1.0/24' net = ipaddress.ip_network(n) ip=ipaddress.ip_address('192.168.1.233') if ip in net: print("在里面")
网络接口表示网络上的一个特定地址,可以表示为一个主机地址和一个网络前缀或网络掩码。示例如下:
import ipaddress addresses = [ '192.168.1.251/24', '2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b/64' ] for ip in addresses: iface = ipaddress.ip_interface(ip) print(iface) print("网络地址:", iface.network) print("ip地址:", iface.ip) print("字符串表示形式:", iface.with_prefixlen) print("二进制表示掩码:", iface.with_netmask) print("主机掩码表示:", iface.with_hostmask)
运行之后,效果如下:
以上是“Python中如何处理ipaddress网络地址”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。