编写程序,输入一个目录的路径,检查该目录及其子目录中的所有文件是否存在两个完全相同的文件(文件名及其文件内容都相同)
时间: 2024-02-28 20:52:51 浏览: 84
好的,这个问题需要用到文件的哈希值来进行比较,我会为你编写一个 Python 程序实现该功能。
```python
import os
import hashlib
def get_file_hash(file_path):
"""获取文件的哈希值"""
with open(file_path, 'rb') as f:
sha256 = hashlib.sha256()
while True:
data = f.read(65536)
if not data:
break
sha256.update(data)
return sha256.hexdigest()
def find_duplicate_files(dir_path):
"""查找重复的文件"""
file_hashes = {}
for root, dirs, files in os.walk(dir_path):
for file_name in files:
file_path = os.path.join(root, file_name)
file_hash = get_file_hash(file_path)
if file_hash in file_hashes:
print(f'Duplicate files found: {file_path} and {file_hashes[file_hash]}')
else:
file_hashes[file_hash] = file_path
if __name__ == '__main__':
dir_path = input('请输入目录路径:')
find_duplicate_files(dir_path)
```
运行程序后,输入要查找的目录路径,程序会递归遍历该目录及其子目录中的所有文件,计算每个文件的哈希值,并将哈希值作为字典的键,文件路径作为字典的值存储起来。如果发现两个文件的哈希值相同,则说明这两个文件完全相同,即为重复文件。程序会输出所有重复文件的路径。
阅读全文