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 zip文件 压缩
Dec 24 Python
python抓取京东商城手机列表url实例代码
Dec 18 Python
python使用os模块的os.walk遍历文件夹示例
Jan 27 Python
Python实现定时自动关闭的tkinter窗口方法
Feb 16 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 Python
Django框架实现在线考试系统的示例代码
Nov 30 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
利用python做数据拟合详情
Nov 17 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
PHP4之真OO
2006/10/09 PHP
php session处理的定制
2009/03/16 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
Angular+Node生成随机数的方法
2017/06/16 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
python基于phantomjs实现导入图片
2016/05/13 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
Python实现的密码强度检测器示例
2017/08/23 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
师范应届毕业生自荐信
2013/11/18 职场文书
机电一体化专业应届生求职信
2013/11/27 职场文书
教学器材管理制度
2014/01/26 职场文书
业务员的岗位职责
2014/03/15 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
学生手册评语
2014/05/05 职场文书
环保项目建议书
2014/08/26 职场文书
行政处罚告知书
2015/07/01 职场文书
辩论会主持词
2015/07/03 职场文书
2015中秋祝酒词
2015/08/12 职场文书
php实例化对象的实例方法
2021/11/17 PHP