zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python实现ip查询示例

PythonIP 实现 Python 查询 示例 ip
2023-06-13 09:15:24 时间

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

处理程序

复制代码代码如下:

importos,time

defgetip(filepath):
   ip2city={}
   file=open(filepath,"r")
   lines=file.readlines()
   file.close()
   forlineinlines:
       ip=line.split("")[0]
       city=line.split("")[1]
       haship=hashm(ip)
       ifhashipinip2city:
           pass
       else:
           ip2city[haship]=city
   print("Hashdone!")
   returnip2city

defhashm(ip):
   iplist=ip.split(".")
   ip=int(iplist[0])*4+int(iplist[1])*2+int(iplist[2])
   returnip

defgetcityfromip(filepath,ipandcity):
   outputstr=[]
   forfileinos.listdir(filepath):
       file_handler=open(filepath+"\\"+file,"r")
       line=file_handler.readline()
       whileline:
           ip=hashm(line.rstrip())
           ifipinipandcity:
               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!")
       

defsplitfile(filepath):
   file=open(filepath,"r")
   block_size=8000000
   filecount=1
   temp=[]
   count=0
   line=file.readline()
   whilelineortemp:
       ifcount==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()
   returnos.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

复制代码代码如下:


#Generate100millonip
importrandom
importtime

defgenerateIpAdd(file,num):
   ip=[]
   file=open(file,"a+")
   foriinrange(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()
   foriinrange(10000):
       generateIpAdd("D:\ip.txt",10000)
   end=time.clock()
   print(end-start)