python对ip地址进行排序、分类的方法详解
1、使用socket库对ip进行排序
示例代码:
import socket
ip_list = ['10.5.11.1', '192.168.1.33', '10.5.2.4', '10.5.1.3', '10.5.11.13', '10.5.11.12', '10.5.1.1', '10.5.1.2',
'10.5.1.11', '10.5.1.13']
print(sorted(ip_list, key=socket.inet_aton))
for i in sorted(ip_list, key=socket.inet_aton):
print(i)运行结果:

2、使用sort()函数构造排序
示例代码:
ip_list = ['192.168.1.33', '10.5.2.4', '10.5.1.3', '202.98.96.68', '133.120.1.1', '192.168.1.22']
print(sorted(ip_list, key=lambda x: (int(x.split('.')[0]), int(x.split('.')[1]), int(x.split('.')[2]))))
ip_lst = sorted(ip_list, key=lambda x: (int(x.split('.')[0]), int(x.split('.')[1]), int(x.split('.')[2])))
for i in ip_lst:
print(i)运行结果:

3、对ip地址进行分类
如:这儿按最后一位进行分类,写入不同的文件中。此处忽略对ip地址的排序。
示例代码:
ip_list = ['192.168.1.33', '10.5.2.4', '10.5.1.3', '202.98.96.68', '133.120.1.1', '192.168.1.22']
for ip in ip_list:
last_ip_num = ip.split('.')[-1]
with open('data/xxx.xxx.xxx.{}.txt'.format(last_ip_num), 'a', encoding='utf-8') as f:
f.write(ip)运行结果:

优化上述代码,当ip_list列表中有数以亿计的ip时,上述代码效率是非常低的,耗时主要在打开文件写数据方面,可以把每一类ip先暂时存储,最终一次性写入文件中。
示例代码:
ip_list = ['192.168.1.33', '10.5.2.33', '10.5.1.33', '202.98.96.1', '133.120.1.1', '192.168.1.1']
ip_dic_save = {}
for ip in ip_list:
last_ip_num = ip.split('.')[-1]
if f'xxx.xxx.xxx.{last_ip_num}.txt' not in ip_dic_save:
ip_dic_save[f'xxx.xxx.xxx.{last_ip_num}.txt'] = []
ip_dic_save[f'xxx.xxx.xxx.{last_ip_num}.txt'].append(ip + ';')
else:
ip_dic_save[f'xxx.xxx.xxx.{last_ip_num}.txt'].append(ip + ';')
print(ip_dic_save)
path = 'data/'
for key, value in ip_dic_save.items():
with open(path + key, 'a', encoding='utf-8') as f:
f.writelines(value)运行结果:



如果数据量过大,ip_dic_save会占用较大内存,可以对字典中的每个key:value键值对进行判断,若value列表长度到达某个长度时,可以分批次写入到文件中。
到此这篇关于python对ip地址进行排序、分类的方法详解的文章就介绍到这了,更多相关python对ip排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python利用matplotlib.pyplot.boxplot()绘制箱型图实例代码
相信大家应该都知道Python绘制箱线图主要用matplotlib库里pyplot模块里的boxplot()函数,下面这篇文章主要给大家介绍了关于Python利用matplotlib.pyplot.boxplot()绘制箱型图的相关资料,需要的朋友可以参考下2022-08-08
selenium+python配置chrome浏览器的选项的实现
这篇文章主要介绍了selenium+python配置chrome浏览器的选项的实现。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-03-03
Django-Model数据库操作(增删改查、连表结构)详解
这篇文章主要介绍了Django-Model数据库操作(增删改查、连表结构)详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-07-07


最新评论