ycycoco 发表于 2018-8-11 08:56:34

python实战系列之ip地址排序问题(二)

#!/usr/bin/env python  
#-*- coding:utf8 -*-
  
'''
  
author:Happy
  
from: Happy云实验室
  
欢迎交流
  
'''
  
import sys
  
import os.path
  
def ipsort(filepath="ip.txt"):
  
      '''
  
      定义一个函数,用于将ip地址排序, 默认的文件路径是当前目录下的ip.txt文件,返回排序后的ip地址列表
  
      '''
  
      try:
  
                ip = []
  
                f = file(filepath,'r')
  
                fcontext = f.readlines()
  
                for ips in fcontext:
  
                        ips = ips.strip()
  
                        ip.append(ips)
  
                ip.sort(lambda x,y: cmp(''.join( [ i.rjust(3, '0') for i in x.split('.')] ), ''.join( [ i.rjust(3, '0') for i in y.split('.')])))       #排序
  
                f.close()
  
      except Exception,msg:
  
                print "Error:%s" % (msg)
  
                sys.exit(1)
  
      return ip
  
def main():
  
      '''
  
      检查脚本携带参数的情况,必须携带一个参数——文件名,并检查文件名是否存在,调用排序的函数ipsort()
  
      '''
  
      try:
  
                if len(sys.argv) != 2:
  
                        print "Usage: %s %s" % (sys.argv,sys.argv)
  
                else:
  
                        if os.path.exists(sys.argv):
  
                              filename=sys.argv
  
                        else:
  
                              print "%s is not exists!" % (sys.argv)
  
                              sys.exit(1)
  
                ip = ipsort(filename)         #执行排序函数调用
  
                for ips in ip:
  
                        print ips
  
      except Exception,msg:
  
                print "\033[31mError: %s\033[0m" % (msg)
  
if __name__ == "__main__":
  
      main()
页: [1]
查看完整版本: python实战系列之ip地址排序问题(二)