zoukankan      html  css  js  c++  java
  • 项目中的一个小脚本

    Excel_A里是一大堆IP地址。

    Excel_B里是IP地址所对应的物理地址。

    两个文件:

    Excel_A如下图所示                  Excel_B如下图所示:

     

    需求:

    将Excel_A中的IP在Excel_B中找到对应的物理地址。


    那么写的思路是什么样的呢?

      刚开始想要操作excel,python里也有针对excel操作的模块,但是过于太久没有使用都忘得差不多了。所以就选用把要操作的Excel_A里的全都复制出来到一个txt里。然后再去到Excel_B中判断这个IP属于那个地市。

    其实思路还是相对比较多的,可以以数列的形式进行筛选,比如,我要获得192.168.1.1这个IP是那个地区的。那么我直接将IP作为数列的key,地区作为values,然后写成一个函数,参数是IP,我每次都通过IP去获取地区,return出地区和IP就可以了,比如1-15这个区间是贵阳的,然后自然是需要加上这个区间。就比如跑192.168.1.1那么跑出来的结果就要是:192.168.1.1 贵阳 南明区

    #我在脚本中就没有说传入IP我是直接截取第三个,比如192.168.1.2 我直接截取出1来。然后去判断的。

    所以大致代码如下所示:

    #!/url/bin/env python
    #encoding=utf-8
    
    #横杠为空置
    def pao(num):
        if num in range(0,125):
            flag = ""
            with open('diqu.txt', 'r') as f:
                for i in f.readlines():
                    data = i.strip()
                    if data == '':
                        flag += '-|'
                    else:
                        flag += data + "|"
            if num in range(0,15):
                diqu = "贵阳 "
            if num in range(15,33):
                diqu = "遵义 "
            if num in range(33,43):
                diqu = "安顺 "
            if num in range(43,59):
                diqu = "黔南 "
            if num in range(59,79):
                diqu = "黔东南 "
            if num in range(79,93):
                diqu = "铜仁 "
            if num in range(93,105):
                diqu = "毕节 "
            if num in range(105,113):
                diqu = "六盘水 "
            if num in range(113,126):
                diqu = "黔西南 "
            return(diqu + flag.split("|")[num])
        if num in range(129,131):
            return("None")
        if num in range(135, 189):
            return("None")
        if num in range(201, 210):
            return("None")
        if num in range(234,241):
            return("None")
        if num in range(245,248):
            return("None")
        if num == 198 or num == 199 or num == 213 or num == 216 or num == 231 or num == 232 or num ==242 or num == 243:
            return("None")
        else:return("其他")
    
    def hander(string):
        ip = int(string.split('.')[2])
        return(ip)
    
    count = -1
    with open('ip.txt','r') as f:
        count +=1
        if count == 125:exit()
        ip = f.readlines()
        for i in ip:
            ip = i.strip('
    ')
            num = hander(ip)
            print(pao(num))
  • 相关阅读:
    文档重复检测软件 DuplicateDetector
    Afinal 0.2.1 发布 Android的快速开发框架
    CshBBrain 4.0 发布,高性能WebSocket服务器
    英特尔的 C++ 编译器发布 13.0 版本
    Perl 5.16.2 发布
    OpenBSD 5.2 发布
    Webconverger 15.1 发布,适合网吧的 Linux
    Spring Framework 3.2 RC1 发布
    Postgres 9.2 新特性之:范围类型 (Range Types)
    Expression Blend实例中文教程系列文章汇总
  • 原文地址:https://www.cnblogs.com/nul1/p/10278939.html
Copyright © 2011-2022 走看看