python实现ip查询示例


Posted in Python onMarch 26, 2014

以下代码实现了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内置函数dir详解
Apr 14 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
详解K-means算法在Python中的实现
Dec 05 Python
scrapy爬虫完整实例
Jan 25 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
pycharm 添加解释器的方法步骤
Aug 31 Python
解析python中的jsonpath 提取器
Jan 18 Python
python fabric实现远程操作和部署示例
Mar 25 #Python
python基础教程之数字处理(math)模块详解
Mar 25 #Python
python操作摄像头截图实现远程监控的例子
Mar 25 #Python
python基础教程之字典操作详解
Mar 25 #Python
python基础教程之元组操作使用详解
Mar 25 #Python
python基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 #Python
python使用循环实现批量创建文件夹示例
Mar 25 #Python
You might like
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
半角全角相互转换的js函数
2009/10/16 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
css配合jquery美化 select
2013/11/29 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
Django框架多表查询实例分析
2018/07/04 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
自考自我鉴定范文
2013/10/30 职场文书
学生请假条
2014/04/11 职场文书
公司合作意向书范文
2014/07/30 职场文书
财务审计整改报告
2014/11/06 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书