手机
当前位置:查字典教程网 >脚本专栏 >python >python实现ip查询示例
python实现ip查询示例
摘要:以下代码实现了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实现ip查询示例】相关文章:

用python实现批量重命名文件的代码

python列表操作使用示例分享

python 实现归并排序算法

python获得图片base64编码示例

python合并文本文件示例

python求斐波那契数列示例分享

python三元运算符实现方法

python类参数self使用示例

python使用os模块的os.walk遍历文件夹示例

python定时器使用示例分享

精品推荐
分类导航