Python查找重復(fù)文件相關(guān)操作方式分享
當(dāng)我們?cè)谑褂糜脖P存放資料的時(shí)候,通常情況下,時(shí)間一久,就會(huì)出現(xiàn)一些垃圾文件以及重復(fù)文件的出現(xiàn),那么該怎樣才能很好的處理這一問題呢?今天我們就可以利用Python來編寫一個(gè)工具幫助我們解決。那么,就讓我們一起看看Python查找重復(fù)文件的相關(guān)實(shí)現(xiàn)方法吧。#t#
Python查找重復(fù)文件主要思路如下:
1. 查找同命文件
2. 利用了crc32,先檢查出同樣尺寸的文件,再計(jì)算crc32,得出相同的文件名列表。
下面是轉(zhuǎn)載的一個(gè)Python查找重復(fù)文件的代碼,雖然可以滿足要求,但是在查找大量文件時(shí)候,速度很慢,我抽空把它調(diào)優(yōu)。
- #!/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
以上就是對(duì)Python查找重復(fù)文件的相關(guān)介紹。