轉:python——IPy庫

來源:互聯網
上載者:User
python——IPy庫 (2011-03-09 15:29)分類: pythonWebsite: https://github.com/haypo/python-ipy/安裝:easy_install IPy >>> from IPy import IP>>> dir(IP)                     ['__add__', '__cmp__', '__contains__', '__doc__', '__eq__', '__getitem__', '__hash__', '__init__', '__len__', '__lt__', '__module__', '__nonzero__', '__repr__', '__str__', '_getIPv4Map', '_printPrefix', 'broadcast', 'int', 'iptype', 'len', 'make_net', 'net', 'netmask', 'overlaps', 'prefixlen', 'reverseName', 'reverseNames', 'strBin', 'strCompressed', 'strDec', 'strFullsize', 'strHex', 'strNetmask', 'strNormal', 'version']>>> IP('172.29.20.80/28').len()  —— IP數量16>>> IP('172.29.20.80/28').net()  —— 網段   IP('172.29.20.80')>>> IP('172.29.20.80/28').netmask() —— 掩碼IP('255.255.255.240')>>> IP('172.29.20.0/24').prefixlen() —— 掩碼,INT型24>>> IP('172.29.20.0/24').strNormal(0) —— 網段'172.29.20.0'>>> IP('172.29.20.0/24').strNormal(1) —— 網段 + 掩碼'172.29.20.0/24'>>> IP('172.29.20.0/24').strNormal(2) —— 網段 + 掩碼'172.29.20.0/255.255.255.0'>>> IP('172.29.20.0/24').strNormal(3) —— 網段 + 掩碼'172.29.20.0-172.29.20.255'>>> IP('172.29.20.0/24').strNetmask() —— 掩碼'255.255.255.0'>>> IP('172.29.20.80/28').strNetmask() —— 掩碼'255.255.255.240'>>> IP('172.29.20.0/24').version() —— IP v4 or v6版本號碼4>>> '127.0.0.1' in IP('127.0.0.0/24')True>>> IP('127.0.0.0/24') in IP('127.0.0.0/25')False>>> print(IP('192.168.1.1').iptype())PRIVATE>>> print(IP('152.168.1.1').iptype()) PUBLIC>>> help(IP) —— 可以看到最詳細的文檔,更多的方法 >>> ip=IP('127.0.0.0/30')>>> for i in ip:...     print(i)... 127.0.0.0127.0.0.1127.0.0.2127.0.0.3>>> for i in ip:...     print(type(i))... <type 'instance'><type 'instance'><type 'instance'><type 'instance'>>>> print(ip)127.0.0.0/30>>> for i in ip:            ...     print(str(i))... 127.0.0.0127.0.0.1127.0.0.2127.0.0.3>>> print(ip[2])127.0.0.2>>> print(str(ip[2]))127.0.0.2 其他常用方法介紹: |  __cmp__(self, other) —— 比較大小 |      Called by comparison operations. |       |      Should return a negative integer if self < other, zero if self |      == other, a positive integer if self > other. |       |      Networks with different prefixlen are considered non-equal. |      Networks with the same prefixlen and differing addresses are |      considered non equal but are compared by their base address |      integer value to aid sorting of IP objects. |       |      The version of Objects is not put into consideration. |       |      >>> IP('10.0.0.0/24') > IP('10.0.0.0') |      1 |      >>> IP('10.0.0.0/24') < IP('10.0.0.0') |      0 |      >>> IP('10.0.0.0/24') < IP('12.0.0.0/24') |      1 |      >>> IP('10.0.0.0/24') > IP('12.0.0.0/24') |      0 |  __contains__(self, item) —— 檢查內含項目關聯性 |      Called to implement membership test operators. |       |      Should return true if item is in self, false otherwise. Item |      can be other IP-objects, strings or ints. |       |      >>> IP('195.185.1.1').strHex() |      '0xc3b90101' |      >>> 0xC3B90101 in IP('195.185.1.0/24') |      True |      >>> '127.0.0.1' in IP('127.0.0.0/24') |      True |      >>> IP('127.0.0.0/24') in IP('127.0.0.0/25') |      False |  overlaps(self, item) —— 檢查是否重疊 |      Check if two IP address ranges overlap. |       |      Returns 0 if the two ranges don't overlap, 1 if the given |      range overlaps at the end and -1 if it does at the beginning. |       |      >>> IP('192.168.0.0/23').overlaps('192.168.1.0/24') |      1 |      >>> IP('192.168.0.0/23').overlaps('192.168.1.255') |      1 |      >>> IP('192.168.0.0/23').overlaps('192.168.2.0') |      0 |      >>> IP('192.168.1.0/24').overlaps('192.168.0.0/23') |      -1   

根據ip地址和子網路遮罩計算網段地址和廣播位址(原創) Python裡有一個專門處理該類問題的IP類庫,來看看:

view sourceprint?01 #! /usr/bin/env python 

02   

03 import sys 

04 from IPy import IP 

05   

06 address = sys.argv[1] 

07 netmask = sys.argv[2] 

08   

09 #print address,netmask 

10   

11 #help(IP) 

12 networkAddress = IP(address).make_net(netmask) # init a IP instance, can with netmask directly, or use make_net(netmask) 

13 bcastAddress = IP(networkAddress).broadcast() # return the broadcast ip address 

14   

15 print networkAddress 

16 print bcastAddress

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.