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中操作字典之fromkeys()方法的使用
May 21 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
TensorFlow变量管理详解
Mar 10 Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 Python
python如何生成各种随机分布图
Aug 27 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
Python正则表达式如何匹配中文
May 27 Python
python能做哪方面的工作
Jun 15 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
Feb 18 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中的字符串函数
2006/10/09 PHP
留言板翻页的实现详解
2006/10/09 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
python中的二维列表实例详解
2018/06/19 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
激励口号大全
2014/06/17 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
离职证明标准格式
2014/09/15 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
签字仪式主持词
2015/07/03 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
运动会200米广播稿
2015/08/19 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
python for循环赋值问题
2021/06/03 Python