python大ip文件排重

发布时间:2019-07-02 13:36:38编辑:auto阅读(1671)

    1 需求:

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

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

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

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

    image.png


    2 PLAN A  未遂

     shell处理:

     #time sort ip | uniq | wc -l

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

    image.png


    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

    然后就很快结束了:

    image.png


    4 结束

    简单看下资源消耗情况:


    image.png



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



关键字