python实现ip查询示例

 更新时间:2014年03月26日 10:15:50   作者:  
这篇文章主要介绍了python实现ip查询示例,需要的朋友可以参考下

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

相关文章

  • tensorflow 变长序列存储实例

    tensorflow 变长序列存储实例

    今天小编就为大家分享一篇tensorflow 变长序列存储实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python中lambda与def用法对比实例分析

    python中lambda与def用法对比实例分析

    这篇文章主要介绍了python中lambda与def用法对比,实例分析了lambda与def的区别与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • Atom的python插件和常用插件说明

    Atom的python插件和常用插件说明

    这篇文章给大家分享了Atom的python插件和常用插件,有需要的朋友们可以学习参考下。
    2018-07-07
  • Python基础之面向对象进阶详解

    Python基础之面向对象进阶详解

    这篇文章主要为大家详细介绍了Python基础之面向对象进阶,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Python自动化办公之文件整理脚本分享

    Python自动化办公之文件整理脚本分享

    这篇文章主要为大家分享了一个Python自动化办公脚本,可以实现文件整理,这是一个很有用的技能,可以帮助你管理你的电脑上的各种文件,需要的可以收藏一下
    2023-08-08
  • Python Tornado批量上传图片并显示功能

    Python Tornado批量上传图片并显示功能

    Tornado龙卷风是一个开源的网络服务器框架,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的。这篇文章主要介绍了Python Tornado批量上传图片并显示,需要的朋友可以参考下
    2020-03-03
  • python+selenium识别验证码并登录的示例代码

    python+selenium识别验证码并登录的示例代码

    本篇文章主要介绍了python+selenium识别验证码并登录的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Python如何在for循环中同时使用两个变量与两个控制条件

    Python如何在for循环中同时使用两个变量与两个控制条件

    Python是一种广泛使用的编程语言,其提供了许多强大的方法来处理代码,Python for循环是其中一种非常有用的方法,下面这篇文章主要给大家介绍了关于Python如何在for循环中同时使用两个变量与两个控制条件的相关资料,需要的朋友可以参考下
    2024-03-03
  • 20行python代码实现人脸识别

    20行python代码实现人脸识别

    这篇文章主要介绍了python人脸识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Python简单实现自动删除目录下空文件夹的方法

    Python简单实现自动删除目录下空文件夹的方法

    这篇文章主要介绍了Python简单实现自动删除目录下空文件夹的方法,涉及Python针对文件与目录的读取、判断、删除等相关操作技巧,需要的朋友可以参考下
    2017-08-08

最新评论