python实现ip查询示例
发布时间:2021-07-07 20:04:32
以下代码实现了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)


猜你喜欢
- MMClassification是一个基于PyTorch的开源图像分类工具箱,是OpenMMLab项目的一部分,源码传送门,最新发布版本为v
- 为什么越来越多的非程序员白领都开始学习 Python ?他们可能并不是想要学习 Python 去爬取一些网站从而获得酷酷的成就感,而是工作中
- 前言分享一个Vue前端导出Excel文件的方法。记录学习!功能需求:将表格的全部数据导出Excel格式的文件前端:Vue3+Element-
- Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的。用pdb调试有多种方式可
- pop()函数1、描述pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。语法pop()方法语法:list.p
- 一、修改操作系统核心参数在Root用户下执行以下步骤:1)修改用户的SHELL的限制,修改/etc/security/limits.conf
- 前言:python数据类型: python数据结构之数据类型.今天我们主要来介绍一些内置函数,比如输入输出,控制,和异常的用法,尤其是输出和
- 目录一、Python GUI 编程简介二、流行GUI框架总结三、代码演示四、界面一、Python GUI 编程简介Tkinter 模块(Tk
- sql server 锁定模式有三种:共享( S锁),更新(U锁),排他(X锁);S锁是共享锁,如果事务T对数据A加上共享锁后,则其他事务只
- 本XML系列教程将分三部分发布,到最后一期我们将拥有一个功能全面,更加友好的XML菜单。本教程这个第一期涉及到了一些XML的基础知识。大家都
- 支持Python的IDE有IPython、Aptana Studio(在Eclipse的基础上加插件集改的)、PyCharm(由 JetBr
- 初步确定是病毒破坏了文件的读写权限,现放出修复工具请中招朋友的测试!!使用方法:压缩包中文件全部解压或者直接运行压缩包中的iisfixer.
- 1. python-firepython-fire 是一个三方库,可以将任何 Python 对象变成一个命令行接口。使用前先 pip ins
- 前言不管是做开发还是做过网站的朋友们,应该对于User Agent一点都不陌生,User Agent 中文名为用户代理,简称 UA,它是一个
- 查看并打印matplotlib中所有的colormap(cmap)类型代码如下:方法一import matplotlib.pyplot as
- 有时需要根据项目的实际需求向spider传递参数以控制spider的行为,比如说,根据用户提交的url来控制spider爬取的网站。在这种情
- 目录一、数据库瓶颈二、分库分表2、水平分表3、垂直分库4、垂直分表三、分库分表工具四、分库分表步骤五、分库分表问题1、非partition
- 50个常用sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(
- 基本信息程序包名称:基于.net开发的遵循web标准的个人站点程序包下载开发者主页:www.ceocio.net软件大小:1.84mb安装环
- 使用 NetBox 可以方便的将 asp 应用编译成为独立运行的执行程序,完全摆脱 iis 的束缚,在几乎所有的 Windows