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 全文检索引擎详解
Apr 25 Python
Python实现excel转sqlite的方法
Jul 17 Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
python实现大文本文件分割
Jul 22 Python
Python Django 简单分页的实现代码解析
Aug 21 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
python读取ini配置文件过程示范
Dec 23 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
python 实现读取csv数据,分类求和 再写进 csv
May 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
php反弹shell实现代码
2009/04/22 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
简单的js表单验证函数
2013/10/28 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
Python编写登陆接口的方法
2017/07/10 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
python中pop()函数的语法与实例
2020/12/01 Python
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
护理中职生求职信范文
2014/02/24 职场文书
投标承诺函格式
2015/01/21 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
自我评价优缺点范文
2015/03/11 职场文书
安全主题班会教案
2015/08/12 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript
OpenCV实现反阈值二值化
2021/11/17 Java/Android
css3应用示例:新增的选择器
2022/03/16 HTML / CSS