项目中的一个小脚本

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))
原文地址:https://www.cnblogs.com/nul1/p/10278939.html