当我们在日常的工作中,特别是处理大量文件的时候,经常会出现本地文件夹里有大量重复的文件。如何在Python中快速的删除这些重复文件呢?本文将介绍利用Python删除本地夹里重复文件的方法。
步骤
-
遍历文件夹:利用Python的os模块,遍历文件夹中的所有文件,得到每个文件的路径及其文件名。
-
计算文件哈希值:对于每个文件,计算它的哈希值。如果两个文件的哈希值相同,则可以认为它们是两个相同的文件。
-
删除重复文件:当发现某两个文件哈希值相同时,就将其中一个文件删除即可。
代码示例:
以下代码示例是基于Windows操作系统的示例,计算文件哈希值使用了Python的hashlib库,删除文件使用了os模块的remove函数。
import os
import hashlib
def get_md5(filename, chunk_size=4096):
'''
计算文件的MD5值
'''
with open(filename, 'rb') as f:
md5 = hashlib.md5()
while True:
chunk = f.read(chunk_size)
if not chunk:
break
md5.update(chunk)
return md5.hexdigest()
def remove_duplicate_files(folder):
'''
删除指定文件夹中的重复文件
'''
unique_files = {} # 存储文件哈希值和路径的字典
for root, dirs, files in os.walk(folder):
for filename in files:
path = os.path.join(root, filename)
md5 = get_md5(path)
if md5 in unique_files:
# 如果文件哈希值存在,则说明是重复文件,删除之
print('Removing duplicate file:', path)
os.remove(path)
else:
# 如果文件哈希值不存在,则将其加入unique_files字典
unique_files[md5] = path
# 删除指定文件夹中的重复文件
remove_duplicate_files(r'C:\Users\Administrator\Downloads')
在上述代码中,我们通过遍历指定文件夹中的所有文件,并计算每个文件的哈希值。对于哈希值相同的文件,我们利用remove函数将其中一个文件删除。
另外一个示例是使用Python的set进行判断,利用os模块的remove函数进行删除:
import os
def remove_duplicate_files(folder):
'''
删除指定文件夹中的重复文件
'''
files = set() # 存储文件名和大小的字典
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
path = os.path.join(root, filename)
size = os.path.getsize(path)
file_info = (filename, size)
if file_info in files:
# 如果文件名和大小都相同,则说明是重复文件,删除之
print('Removing duplicate file:', path)
os.remove(path)
else:
# 如果文件名和大小不同,则将其加入files集合
files.add(file_info)
# 删除指定文件夹中的重复文件
remove_duplicate_files(r'C:\Users\Administrator\Downloads')
总结
以上两个示例给出了两种不同的方式实现Python删除本地夹里重复文件的方法。通过遍历文件夹,计算文件的哈希值或者利用集合来判断文件名和大小是否相同,可以快速删除本地文件夹中的重复文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python删除本地夹里重复文件的方法 - Python技术站