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中__init__和__new__的区别详解
Jul 09 Python
python获取本地计算机名字的方法
Apr 29 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
在python3中使用shuffle函数要注意的地方
Feb 28 Python
Python自带的IDE在哪里
Jul 01 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
一行代码python实现文件共享服务器
Apr 22 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 json_encode中文乱码问题的解决办法
2013/09/09 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
jquery动态更换设置背景图的方法
2014/03/25 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
Python深入学习之闭包
2014/08/31 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
python实现石头剪刀布程序
2021/01/20 Python
python读写csv文件实例代码
2019/07/05 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
WiFi云数码相框:Nixplay
2018/07/05 全球购物
《威尼斯的小艇》教学反思
2014/02/17 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
赡养老人协议书
2014/04/21 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
盲山观后感
2015/06/11 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
Python实现列表拼接和去重的三种方式
2021/07/02 Python
python读取mnist数据集方法案例详解
2021/09/04 Python