5643 发表于 2016-7-13 09:14:52

Python+PyDev+Jdk+Eclipse开发环境部署

IP地址与十进制IP转换
#!/usr/bin/env python
#encoding=utf-8

import re
import sys
import os

def ten_to_two(ten_num):
    two_str = ''

    while ten_num != 1:
      a = ten_num % 2
      two_str = two_str + str(a)
      ten_num = ten_num / 2
    else:
      two_str = two_str + str(1)

    two_str = two_str[::-1]
    if len(two_str) < 8:
      cover = (8 - len(two_str)) * str(0)
      two_str = cover + two_str

    return two_str

def two_to_ten(two_num):
    ten_int = 0
    indexlist = range(len(two_num))
    for i in indexlist:
      ten_int += int(two_num) * 2 ** indexlist[-(i+1)]

    return str(ten_int)

def int_to_ipaddr(intnum):
    int_addr = int(intnum)
    twonum = ten_to_two(int_addr)

    if len(twonum) < 32:
      twonum = '0' * (32 - len(twonum)) + twonum

    ipaddr = ''
    for j in range(0, 32, 8):
      k = j + 8
      if j == 24:
            ipaddr += two_to_ten(twonum)
      else:
            ipaddr += two_to_ten(twonum) + '.'

    return ipaddr

def ipaddr_to_int(ipaddress):
    iplist = ipaddress.split('.')
    ipstr = ''
    for i in iplist:
      ipstr += ten_to_two (int(i))

    if ipstr.startswith('0'):
      ipstr = re.sub('^0*', '', ipstr)

    tennum = two_to_ten(ipstr)
    return tennum



if len(sys.argv) < 2:
    print 'No action specified.'
    sys.exit()
elif len(sys.argv) == 2:
    if sys.argv.startswith('--'):
      option = sys.argv
      if option == 'version':
            print 'Version 1.1'
      elif option == 'help':
            print '''\
This program is used to convert the IP address.
\t-i ipaddress\n\t\tConvert the IP address.
\t\tlike ./iptrans.py 192.168.1.1
\t-if filename\n\t\tConvert the IP address's file.
\t\tlike ./iptrans.py ./ipfile
\t-t int ipaddress\n\t\tConvert the int IP address.
\t\tlike ./iptrans.py 3232235777
\t-tf filename\n\t\tConvert the IP address's file.
\t\tlike ./iptrans.py ./intipfile
\t--help\n\t\tDisplay this help.
\t--version\n\t\tPrints the version number.'''
    else:
      print 'Unknown option.'
      sys.exit()
elif len(sys.argv) == 3:
    if sys.argv.startswith('-'):
      option = sys.argv
      if option == 'i':
            if sys.argv.count('.') == 3:
                ipaddress = sys.argv
                intkey = ipaddr_to_int(ipaddress)
                print '%s\t%s' % (ipaddress, intkey)
            else:
                print '%s is error.' % sys.argv
                sys.exit()
      elif option == 'if':
            if os.path.isfile(sys.argv) == True:
                filename = sys.argv
                f = open(filename, 'r')
                for line in f:
                  ipaddress = line.replace('\n', '')
                  intkey = ipaddr_to_int(ipaddress)
                  print '%s\t%s' % (ipaddress, intkey)
            else:
                print 'The %s is not exist.' % sys.argv
                sys.exit()
      elif option == 't':
            intkey = sys.argv
            if int(intkey) < 16777217:
                print '%s is error, must be great than 16777217' % sys.argv
            else:
                ipaddress = int_to_ipaddr(intkey)
                print '%s\t%s' % (intkey, ipaddress)
      elif option == 'tf':
            if os.path.isfile(sys.argv) == True:
                filename = sys.argv
                f = open(filename, 'r')
                for line in f:
                  intkey = line.replace('\n', '')
                  ipaddress = int_to_ipaddr(intkey)
                  print '%s\t%s' % (intkey, ipaddress)
            else:
                print 'The %s is not exist.' % sys.argv
                sys.exit()
      else:
            print 'Unknown option.'
            sys.exit()
else:
   print 'Unknown option.'
   sys.exit()


页: [1]
查看完整版本: Python+PyDev+Jdk+Eclipse开发环境部署