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爬虫代理IP快速增加博客阅读量
Dec 14 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
Python 导入文件过程图解
Oct 15 Python
django使用xadmin的全局配置详解
Nov 15 Python
解决Python二维数组赋值问题
Nov 28 Python
python实现高斯判别分析算法的例子
Dec 09 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
python安装后的目录在哪里
Jun 21 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 Python
python 使用三引号时容易犯的小错误
Oct 21 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 file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
PHP运行时强制显示出错信息的代码
2011/04/20 PHP
php判断linux下程序问题实例
2015/07/09 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
javascript时间函数大全
2014/06/30 Javascript
javascript实现拖放效果
2015/12/16 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python用字典统计单词或汉字词个数示例
2014/04/22 Python
python if not in 多条件判断代码
2016/09/21 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
用Python读取几十万行文本数据
2018/12/24 Python
Python super()函数使用及多重继承
2020/05/06 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
python 检测图片是否有马赛克
2020/12/01 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
大学生的网络创业计划书
2013/12/26 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
戒赌保证书
2015/05/11 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python