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 26进制计算实现方法
May 28 Python
python 网络编程详解及简单实例
Apr 25 Python
Python实现完整的事务操作示例
Jun 20 Python
Python实现的快速排序算法详解
Aug 01 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
python操作日志的封装方法(两种方法)
May 23 Python
python中对数据进行各种排序的方法
Jul 02 Python
wxPython实现画图板
Aug 27 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
python实现的web监控系统
Apr 27 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&mysql(二)
2006/10/09 PHP
几个php应用技巧
2008/03/27 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php页面防重复提交方法总结
2013/11/25 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python进阶教程之文本文件的读取和写入
2014/08/29 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
python reverse反转部分数组的实例
2018/12/13 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
就职演讲稿范文
2014/05/19 职场文书
公司岗位说明书
2015/10/08 职场文书
Python中的程序流程控制语句
2022/02/24 Python