python实现ip查询示例

yipeiwu_com7年前Python基础

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

相关文章

Python实现查找匹配项作处理后再替换回去的方法

本文实例讲述了Python实现查找匹配项作处理后再替换回去的方法。分享给大家供大家参考,具体如下: 这里实现Python在对找到的匹配项进行适当处理后,再替换掉原来那个匹配的项。 #...

python使用pil库实现图片合成实例代码

python使用pil库实现图片合成实例代码

本文研究的主要是python PIL实现图片合成的相关内容,具体介绍如下,分享实例代码。 在项目中需要将两张图片合在一起。遇到两种情况,一种就是两张非透明图片的合成, 一种是涉及到透明p...

python 用下标截取字符串的实例

运行环境: win7 64位 python 2.7 pycharm python 源码如下 # -*- coding: utf-8 -*- str = '0123456789'...

在Python中关于使用os模块遍历目录的实现方法

一、Python中os模块的常见的使用方法 os.listdir(path):遍历path的文件或者文件夹,返回一个列表 os.path.join(path1,path2,……,path...

python3用PIL把图片转换为RGB图片的实例

感想 我们在做深度学习处理图片的时候,如果是自己制作或者收集的数据集,不可避免的要对数据集进行处理,然后大多数模型都只支持RGB格式的图片,这个时候,我们需要把其他格式的图片,例如灰度图...