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实现在目录中查找指定文件的方法
Nov 11 Python
wxpython中自定义事件的实现与使用方法分析
Jul 21 Python
Python学习入门之区块链详解
Jul 25 Python
python3 判断列表是一个空列表的方法
May 04 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
python批量获取html内body内容的实例
Jan 02 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
python manage.py runserver流程解析
Nov 08 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
pycharm代码删除恢复的方法
Jun 26 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
laravel中Redis队列监听中断的分析
2020/09/14 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
一些常用的JS功能函数代码
2009/06/23 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
详解jquery和vue对比
2019/04/16 jQuery
Openlayers实现测量功能
2020/09/25 Javascript
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
Python自动生产表情包
2017/03/17 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
中等生评语大全
2014/05/04 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
史上最牛的辞职信
2015/02/28 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android