码迷,mamicode.com
首页 > 编程语言 > 详细

python大ip文件排重

时间:2018-04-02 21:13:19      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:python   大文件   读取   去重   

1 需求:

整理个IP列表,需要将IP去重下,统计一共多少来源

本来想直接shell命令解决,简单的 sort 管道 uniq  然后wc下

无奈文件太大,条数多,处理效率不堪

文件大概5G,几亿条数据吧

技术分享图片


2 PLAN A  未遂

 shell处理:

 #time sort ip | uniq | wc -l

然后没啥反应了。。。。 其实是在处理中,最后被我ctrl c了

技术分享图片


3 PLAN B

没办法写个简单的python,用列表的排重特性(需要注意文件读取的方法,不要将文件一次全部读取到内存。。。):

#! /usr/bin/env python 
d={}
with open('ip', 'rb') as f:
    for line in f:
        d[line] = 'ip'
print  len(d)
time python read.py

然后就很快结束了:

技术分享图片


4 结束

简单看下资源消耗情况:


技术分享图片



优势还是挺明显的,以小见大吧,希望python可以帮助大家解决工作中的实际问题,不论大小。



python大ip文件排重

标签:python   大文件   读取   去重   

原文地址:http://blog.51cto.com/welcomeweb/2093946

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!