Python访问纯真IP数据库脚本分享


Posted in Python onJune 29, 2015

项目中有这样的需求,通过IP地址判断客户端是网通的还是电信的。从同事那拿了个纯文本的IP纯真数据库,用Python写了一个小程序,感觉挺好的。下面给出实现源码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from bisect import bisect

_LIST1, _LIST2 = [], []
_INIT = False

ip2int = lambda ip_str: reduce(lambda a, b: (a << 8) + b, [int(i) for i in ip_str.split('.')])

def _init():
  global _LIST, _INIT
  if not _INIT:
    for l in open('ipdata.txt', 'rb'):
      ip1, ip2 = l.split()[:2]
      addr = ' '.join(l.split()[2:])
      ip1, ip2 = ip2int(ip1), ip2int(ip2)
      _LIST1.append(ip1)
      _LIST2.append((ip1, ip2, addr))
    _INIT = True
  
def ip_from(ip):
  _init()
  i = ip2int(ip)
  idx = bisect(_LIST1, i)
  assert(idx > 0)
  if len(_LIST1) <= idx:
    return u'unknown ip address %s' % ip
  else:
    frm, to ,addr = _LIST2[idx - 1]
    if frm <= i <= to:
      return addr
    else:
      return u'unknown ip address %s' % ip
  
if __name__ == '__main__':
  print ip_from('115.238.54.106')
  print ip_from('220.181.29.160')
  print ip_from('115.238.54.107')
  print ip_from('8.8.8.8')
Python 相关文章推荐
python操作MongoDB基础知识
Nov 01 Python
Python实现获取网站PR及百度权重
Jan 21 Python
Python网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
Python代码缩进和测试模块示例详解
May 07 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
python os.fork() 循环输出方法
Aug 08 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
解决json中ensure_ascii=False的问题
Apr 03 Python
python删除某个目录文件夹的方法
May 26 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
Python实现把数字转换成中文
Jun 29 #Python
Python中if __name__ == '__main__'作用解析
Jun 29 #Python
django接入新浪微博OAuth的方法
Jun 29 #Python
python链接Oracle数据库的方法
Jun 28 #Python
python写日志封装类实例
Jun 28 #Python
Python实现的简单hangman游戏实例
Jun 28 #Python
python实现矩阵乘法的方法
Jun 28 #Python
You might like
需要发散思维学习PHP
2009/06/29 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP实现小偷程序实例
2016/10/31 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
一段实时更新的时间代码
2006/07/07 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
遗传算法之Python实现代码
2017/10/10 Python
详解flask入门模板引擎
2018/07/18 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
Python创建临时文件和文件夹
2020/08/05 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
网络技术支持面试题
2013/04/22 面试题
小学英语教学反思案例
2014/02/04 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
优质服务活动实施方案
2014/05/02 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
高校教师个人工作总结2014
2014/12/17 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技