ipaddress

作者: 11爱生活 | 来源:发表于2020-06-08 23:30 被阅读0次

    【背景】

    使用到这个模块是腾讯二面时面试官出了一道题:"判断一个字符串是不是IP地址",当时没写上来,是说了解题思路,面试结束自己写出来后,并进行了拓展,如果是IPV4还比较好处理,因为"."隔开的是0-255之间的数,但IPV6使用":"隔开的是4个16进制的数,后面网上查到有ipaddress这个模块,可以判断是否为IP地址且返回版本号

    【常用方法】

    1、判断是否是IP地址:

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

    2、读取IP地址版本

    >>> ip1 = ipaddress.ip_address('192.0.2.1')
    >>> ip1.version
    4
    >>> ip2 = ipaddress.ip_address('2001:DB8::1')
    >>> ip2.version
    6
    

    【拓展方式】

    https://docs.python.org/zh-cn/3/howto/ipaddress.html

    【注意点】

    • 编码问题
    #这种写法在python2.x中会报错
    str = '192.0.0.1'
    #不进行转换python2.x中会报错,python3.x正常
    #str = str.decode('utf-8') 
    ipaddress.ip_address(str)
    (ipaddress.AddressValueError: '192.168.0.0' does not appear to be an IPv4 or IPv6 address. Did you pass in a bytes (str in Python 2) instead of a unicode object?)
    

    提示类型错误,需要将括号内的字符串转化为unicode类型

    解释请参考:https://www.cnblogs.com/yangmingxianshen/p/7990102.html

    相关文章

      网友评论

          本文标题:ipaddress

          本文链接:https://www.haomeiwen.com/subject/okqjtktx.html