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中定义结构体的方法
Mar 04 Python
Python使用random和tertools模块解一些经典概率问题
Jan 28 Python
用Python遍历C盘dll文件的方法
May 06 Python
Python打印斐波拉契数列实例
Jul 07 Python
python实现决策树分类(2)
Aug 30 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
安装PyInstaller失败问题解决
Dec 14 Python
Python利用命名空间解析XML文档
Aug 10 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
thinkphp配置连接数据库技巧
2014/12/02 PHP
扩展String功能方法
2006/09/22 Javascript
简单JS代码压缩器
2006/10/12 Javascript
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python groupby 函数 as_index详解
2019/12/16 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
音乐学个人的自荐书范文
2013/11/26 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
学校教师读书活动总结
2014/07/08 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
教师听课评语大全
2014/12/31 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
教师创先争优承诺书
2015/04/27 职场文书
初中班主任心得体会
2016/01/07 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
Win11快速关闭所有广告推荐
2022/04/19 数码科技