python实现ip查询示例
admin
2023-07-31 02:07:18
0

以下代码实现了ip查询功能

处理程序

复制代码 代码如下:
import os,time

def getip(filepath):
    ip2city={}
    file=open(filepath,\’r\’)
    lines=file.readlines()
    file.close()
    for line in lines:
        ip=line.split(\’ \’)[0]
        city=line.split(\’ \’)[1]
        haship=hashm(ip)
        if haship in ip2city:
            pass
        else:
            ip2city[haship]=city
    print(\’Hash done!\’)
    return ip2city

def hashm(ip):
    iplist=ip.split(\’.\’)
    ip=int(iplist[0])*4+int(iplist[1])*2+int(iplist[2])
    return ip

def getcityfromip(filepath,ipandcity):
    outputstr=[]
    for file in os.listdir(filepath):
        file_handler=open(filepath+\’\\\\\’+file,\’r\’)
        line=file_handler.readline()
        while line:
            ip=hashm(line.rstrip())
            if ip in ipandcity:
                outputstr.append(line.rstrip()+\’    \’+ipandcity[ip])
            line=file_handler.readline()
        file_handler.close()
        outfile_handler=open(filepath+\’\\\\\’+file.split(\’.\’)[0]+\’_out.txt\’,\’a+\’)
        outfile_handler.writelines(outputstr)
        outfile_handler.close()
        print(file.split(\’.\’)[0]+\’_out.txt\’+\’done!\’)
       

def splitfile(filepath):
    file=open(filepath,\’r\’)
    block_size=8000000
    filecount=1
    temp=[]
    count=0
    line=file.readline()
    while line or temp:
        if count==block_size:
            wfile=open(\’D:\\\\ipfile\\\\file_\’+str(filecount)+\’.txt\’,\’a+\’)
            wfile.writelines(temp)
            temp=[]
            count=0
            wfile.close()
            filecount+=1
            print(\’Split\’+str(filecount)+\’ done!\’)
        else:
            count+=1
            temp.append(line)
            line=file.readline()
    file.close()
    return os.path.join(\’D:\\\\\’+\’ipfile\’)

if __name__ == \’__main__\’:
    start=time.clock()
    filepath=\’D:\\\\ip.txt\’
    ippath=\’D:\\\\citys.txt\’
    ip2city=getip(ippath)
    splitfilepath=splitfile(filepath)
    getcityfromip(\’D:\\\\\’+\’ipfile\’,ip2city)
    end=time.clock()
    print(end-start)

生成IP

复制代码 代码如下:
#Generate 100 millon ip
import random
import time

def generateIpAdd(file,num):
    ip=[]
    file=open(file,\’a+\’)
    for i in range(num):
        ipAdd=\’192.168.\’+str(random.randint(0,255))+\’.\’+str(random.randint(0,255))
        ip.append(ipAdd+\’\\n\’)
    file.writelines(ip)
    file.close()

if __name__==\’__main__\’:
    start=time.clock()
    for i in range(10000):
        generateIpAdd(\’D:\\ip.txt\’,10000)
    end=time.clock()
    print(end-start)

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...