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中的cookielib模拟登录网站
Apr 09 Python
Python中super的用法实例
May 28 Python
python将ansible配置转为json格式实例代码
May 15 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
Aug 13 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
Python语言异常处理测试过程解析
Jan 08 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
基于Python的Jenkins的二次开发操作
May 12 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
Django利用AJAX技术实现博文实时搜索
May 06 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数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
python定时器(Timer)用法简单实例
2015/06/04 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
Python 画出来六维图
2019/07/26 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
房地产项目策划书
2014/02/05 职场文书
小学语文国培感言
2014/03/04 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
生日寿星公答谢词
2015/09/29 职场文书
九年级数学教学反思
2016/02/17 职场文书
《海上日出》教学反思
2016/02/23 职场文书
Python实现8种常用抽样方法
2021/06/27 Python