python实现ip查询示例
python实现ip查询示例
发布时间:2016-12-28 来源:查字典编辑
摘要:以下代码实现了ip查询功能处理程序复制代码代码如下:importos,timedefgetip(filepath):ip2city={}fi...

以下代码实现了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:ipfilefile_'+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)

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新python学习
热门python学习
脚本专栏子分类