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之再深点,更懂list
Sep 20 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
python实现点击按钮修改数据的方法
Jul 17 Python
使用Python自动生成HTML的方法示例
Aug 06 Python
django admin 自定义替换change页面模板的方法
Aug 23 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
Python爬虫headers处理及网络超时问题解决方案
Jun 19 Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 Python
python从ftp获取文件并下载到本地
Dec 05 Python
python中count函数知识点浅析
Dec 17 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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
Python解析nginx日志文件
2015/05/11 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
python多线程方式执行多个bat代码
2016/06/07 Python
python基于递归解决背包问题详解
2019/07/03 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
家长评语和期望
2014/02/10 职场文书
承诺书范文
2014/06/03 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
租房协议书范例
2014/10/14 职场文书
2014年财务部工作总结
2014/11/11 职场文书
2014年施工员工作总结
2014/11/18 职场文书
经典爱情感言
2015/08/03 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
Python多线程 Queue 模块常见用法
2021/07/04 Python
python获取对象信息的实例详解
2021/07/07 Python