1、如果文件在1G 左右,内存大的话,直接用字典。读一行处理一行。

2、如果文件大,可以切分为小文件,按照1 的方式处理,将没有重复的小文件合并再处理一次。


如果txt文件不是很大,可以将文件全部读到内存中然后查重,如果txt很大最好使用资料库。


可以这样,逐行,以文本的hash值做key,如果重复了就从dict中删掉,最终将dict输出


用sqlcel的「删除重复项」功能可对txt文本删重。图形化界面使用起来很简单。

选择一个或多个栏位然后点击「确定」即可完成。如下:

10G的文本支持起来也没问题,速度很快。


如果用open(FileName).read(),文件很大将爆满内存,

不过,不是提供了另外一个方法。

with open(FileName) as f:

for line in f.readlines():

//这个line就是每一行的数据,你可以对这个line进行hash作为key,line作为value.这里你可以重新打开一个文件,将这个line写进去

这样子就省内存啦


如果只是逐行比重,那就每行算MD5,然后算MD5的重复值。做Hash就成了


就演算法而言,

直接按行读取文件,然后计算每行的hash值作为key,如果key已经存在并且value不为空,就说明跟之前的重复了;否则,说明是第一次出现,就输出到新的文件中,并且将hash值作为key,插入字典中。直到文件结束。

处理大文件的方法就是直接

with open(fileName,r) as f:

for lines in f:

然后python 内部会自己创建缓冲,避免内存溢出。

如果是非常大的文件,分散式处理。


推荐阅读:
相关文章