1. 程式人生 > >python大ip文件排重

python大ip文件排重

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文件排重