当我们在使用硬盘存放资料的时候,通常情况下,时间一久,就会出现一些垃圾文件以及重复文件的出现,那么该怎样才能很好的处理这一问题呢?今天我们就可以利用Python来编写一个工具帮助我们解决。那么,就让我们一起看看Python查找重复文件的相关实现方法吧。#t#
Python查找重复文件主要思路如下:
1. 查找同命文件
2. 利用了crc32,先检查出同样尺寸的文件,再计算crc32,得出相同的文件名列表。
下面是转载的一个Python查找重复文件的代码,虽然可以满足要求,但是在查找大量文件时候,速度很慢,我抽空把它调优。
- #!/usr/bin/env python
- #coding=utf-8
- import binascii, os
- filesizes = {}
- samefiles = []
- def filesize(path):
- if os.path.isdir(path):
- files = os.listdir(path)
- for file in files:
- filesize(path + "/" + file)
- else:
- size = os.path.getsize(path)
- if not filesizes.has_key(size):
- filesizes[size] = []
- filesizes[size].append(path)
- def filecrc(files):
- filecrcs = {}
- for file in files:
- f = open(file, "r")
- 23 crc = binascii.crc32(f.read())
- 24 f.close()
- if not filecrcs.has_key(crc):
- filecrcs[crc] = []
- filecrcs[crc].append(file)
- for filecrclist in filecrcs.values():
- if len(filecrclist) > 1:
- samefiles.append(filecrclist)
- if __name__ == '__main__':
- path = r"J:\My Work"
- filesize(path)
- for sizesamefilelist in filesizes.values():
- if len(sizesamefilelist) > 1:
- filecrc(sizesamefilelist)
- for samfile in samefiles:
- print "****** same file group ******"
- for file in samefile:
- print file
以上就是对Python查找重复文件的相关介绍。