python ipaddress模块简介

原著

https://docs.python.org/3.7/howto/ipaddress.html

author: Peter Moody, Nick Coghlan

An introduction to the ipaddress module


概述

本文简单介绍了python自带的 ipaddress模块,只涉及了模块的基础部分,更多函数介绍,还是要参考模块的手册.


创建Address/Network/Interface

ipaddress模块是面向对象的。使用前先要创建相应对象。可以使用字符串或者整数来创建如下三种IP地址对象

注:此库支持ipv4和ipv6

1. IP地址

IP地址,或者叫主机地址,可以使用ipaddress.ip_address() 这个工厂类来创建,会根据传入的字符串自动的创建IPv4/IPv6地址:

>>> ipaddress.ip_address('192.0.2.1')
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address('2001:DB8::1')
IPv6Address('2001:db8::1')

也可以使用正整数来创建地址,默认的,小于2^32认为是IPV4,大于则是IPv6地址:

>>> ipaddress.ip_address(3221225985)
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address(42540766411282592856903984951653826561)
IPv6Address('2001:db8::1')

当然也可以用派生类IPv4Address/IPv6Address强制创建ipv4/ipv6地址:

>>> ipaddress.ip_address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1)
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1)
IPv6Address('::1')

2. 网段地址

ip/mask表示一个网段,可以使用ip_network创建IPv4/IPv6:

>>> ipaddress.ip_network('192.0.2.0/24')
IPv4Network('192.0.2.0/24')
>>> ipaddress.ip_network('2001:db8::0/96')
IPv6Network('2001:db8::/96')

一个网段地址中,主机地址不能被设置,比如192.0.2.1/24就不是一个有效的网段,初始化时程序会抛出一个 ValueError异常. 可以设置参数strict=False来自动的把主机地址置0:

>>> ipaddress.ip_network('192.0.2.1/24')
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值