用Python自动清理电脑内重复文件,只要10行代码(自动脚本)

下面是详细讲解如何使用Python自动清理电脑内重复文件的完整攻略。

目录

  1. 确认要去重的文件夹
  2. 遍历文件夹并计算hash
  3. 筛选出重复文件
  4. 删除重复文件

1. 确认要去重的文件夹

首先,我们需要确认要去重的文件夹路径,这可以使用Python中的os库来实现。可以使用以下代码来获取文件夹路径:

import os

folder_path = r'C:\Users\username\Desktop\folder_name'

需要替换上述代码中的usernamefolder_name为相应的文件夹所在的用户名和文件夹名。

2. 遍历文件夹并计算hash

接下来,需要遍历文件夹里的所有文件,计算出每个文件的hash值,这里我们使用Python中的hashlib库。可以使用以下代码来实现:

import os
import hashlib

folder_path = r'C:\Users\username\Desktop\folder_name'

file_list = os.listdir(folder_path)

file_hash_dict = {}

for file_name in file_list:
    file_path = os.path.join(folder_path, file_name)
    if os.path.isfile(file_path):
        with open(file_path, 'rb') as f:
            file_hash = hashlib.md5(f.read()).hexdigest()
            if file_hash not in file_hash_dict:
                file_hash_dict[file_hash] = [file_path]
            else:
                file_hash_dict[file_hash].append(file_path)

这里我们使用一个字典file_hash_dict来存储每个文件的hash值及其对应的文件路径。如果hash值已经在字典中存在,则说明这个文件是重复文件,我们需要将这个文件的路径添加到字典对应的value中。

3. 筛选出重复文件

现在我们已经可以得到每个文件的hash值及其对应的文件路径了。我们需要筛选出重复文件,这可以使用以下代码来实现:

import os
import hashlib

folder_path = r'C:\Users\username\Desktop\folder_name'

file_list = os.listdir(folder_path)

file_hash_dict = {}

for file_name in file_list:
    file_path = os.path.join(folder_path, file_name)
    if os.path.isfile(file_path):
        with open(file_path, 'rb') as f:
            file_hash = hashlib.md5(f.read()).hexdigest()
            if file_hash not in file_hash_dict:
                file_hash_dict[file_hash] = [file_path]
            else:
                file_hash_dict[file_hash].append(file_path)

duplicate_files = []

for file_hash, file_paths in file_hash_dict.items():
    if len(file_paths) > 1:
        duplicate_files.append(file_paths)

这里我们使用一个列表duplicate_files来存储所有重复文件的路径。

4. 删除重复文件

现在我们已经找到了重复文件的路径,我们可以把它们都删除掉,以留下唯一的文件。可以使用以下代码来实现:

import os
import hashlib

folder_path = r'C:\Users\username\Desktop\folder_name'

file_list = os.listdir(folder_path)

file_hash_dict = {}

for file_name in file_list:
    file_path = os.path.join(folder_path, file_name)
    if os.path.isfile(file_path):
        with open(file_path, 'rb') as f:
            file_hash = hashlib.md5(f.read()).hexdigest()
            if file_hash not in file_hash_dict:
                file_hash_dict[file_hash] = [file_path]
            else:
                file_hash_dict[file_hash].append(file_path)

duplicate_files = []

for file_hash, file_paths in file_hash_dict.items():
    if len(file_paths) > 1:
        duplicate_files.append(file_paths)

for file_paths in duplicate_files:
    for i in range(1, len(file_paths)):
        os.remove(file_paths[i])

这里我们对duplicate_files列表中的每一个元素(也就是每组重复文件的路径)进行循环遍历,从其中删除第二个及以后的文件。

示例说明:

假设在D:\Test_Directory文件夹中有以下4个文件:

  • Test1.txt
  • Test2.txt
  • Test3.txt
  • Test4.txt

其中Test2.txtTest3.txt是重复文件,现在我们需要使用Python自动去重。我们可以使用以下代码来实现:

import os
import hashlib

folder_path = r'D:\Test_Directory'

file_list = os.listdir(folder_path)

file_hash_dict = {}

for file_name in file_list:
    file_path = os.path.join(folder_path, file_name)
    if os.path.isfile(file_path):
        with open(file_path, 'rb') as f:
            file_hash = hashlib.md5(f.read()).hexdigest()
            if file_hash not in file_hash_dict:
                file_hash_dict[file_hash] = [file_path]
            else:
                file_hash_dict[file_hash].append(file_path)

duplicate_files = []

for file_hash, file_paths in file_hash_dict.items():
    if len(file_paths) > 1:
        duplicate_files.append(file_paths)

for file_paths in duplicate_files:
    for i in range(1, len(file_paths)):
        os.remove(file_paths[i])

print('Done')

运行以上代码后,在D:\Test_Directory文件夹中将只剩下以下两个文件:

  • Test1.txt
  • Test2.txt

其中Test2.txt是唯一的重复文件,现在只留下了一个。

希望这份攻略可以帮助你使用Python来自动清理电脑内重复文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Python自动清理电脑内重复文件,只要10行代码(自动脚本) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • python2和python3的输入和输出区别介绍

    Python2 和 Python3 的输入输出区别介绍 在 Python 2.x 版本中,我们使用 raw_input() 函数来获取用户的输入,用 print 语句来输出结果。而在 Python 3.x 版本中,这些函数的名称都有所改变,raw_input() 被替换为 input(),print 语句被替换为 print() 函数。 下面我们通过几个示例…

    python 2023年6月5日
    00
  • Python实现读取大量Excel文件并跨文件批量计算平均值

    下面给出一个完整的Python实现读取大量Excel文件并跨文件批量计算平均值的教程。 步骤1:安装必要的Python库 首先,我们需要安装 pandas 和 numpy 两个Python库来读取Excel文件和进行跨文件平均值计算。我们可以使用以下命令来安装这两个库: pip install pandas pip install numpy 步骤2:编写P…

    python 2023年5月13日
    00
  • Python字符串格式化实例讲解

    Python字符串格式化实例讲解 一、字符串格式化的基本方法 Python中,字符串格式化可以通过格式化操作符%实现。格式化字符串包含格式化指示符,称为占位符,用于指定需要插入的参数的类型和格式。 下面是一些常见的占位符: 占位符 说明 %c 字符 %s 字符串 %d 整数 %f 浮点数 将不同的占位符和需要插入的参数放在一起,可以得到完整的格式化字符串。例…

    python 2023年6月5日
    00
  • 用Python自动发邮件提醒你周末吃啥

    用Python自动发邮件提醒你周末吃啥 在本攻略中,我们将介绍如何使用Python自动发邮件提醒你周末吃啥,并提供一些示例。 步骤1:设置邮箱 在使用Python自动发邮件之前,我们需要先设置邮箱。我们可以使用Python的smtplib库设置邮箱。 以下是一个示例,用于设置邮箱: import smtplib # 设置邮箱 smtp_server = ‘s…

    python 2023年5月15日
    00
  • python解析命令行参数的三种方法详解

    Python 解析命令行参数的三种方法详解 解析命令行参数是 Python 程序中常用的功能之一,Python 提供了多种方式来处理命令行参数。本文将详细介绍 Python 解析命令行参数的三种常用方法,并给出相应的示例说明。 方法一: sys.argv sys.argv 方法可以获取命令行中的所有参数,包括指定程序的名称。我们可以通过访问该列表来解析参数。…

    python 2023年6月2日
    00
  • Python实现获取视频时长功能

    下面是关于Python实现获取视频时长功能的完整攻略: 安装依赖库 首先,需要安装一个名为pydub的Python库来处理音频文件。可以直接使用pip安装: pip install pydub 获取视频文件 获取视频文件的方式有很多,这里仅提供两种常见的获取方式: 从本地文件获取: from pydub.utils import mediainfo vide…

    python 2023年6月2日
    00
  • Python图像识别+KNN求解数独的实现

    一、准备工作 安装Python环境和必要的第三方库(如:numpy、opencv-python、sklearn等) 准备训练集数据,用于训练KNN分类器 准备待求解数独图片 二、拆分图片 在拆分图片这一步,我们需要对数独图片进行拆分,将每个格子拆分出来。可以使用opencv-python库中的cv2.adaptiveThreshold函数进行二值化处理,然后…

    python 2023年5月18日
    00
  • 盘点Python 爬虫中的常见加密算法

    在本攻略中,我们将介绍Python爬虫中的常见加密算法。以下是一个完整攻略,包括两个示例。 常见加密算法 1. Base64 Base64是一种基于64个可打印字符来表示二进制数据的方法。在Python爬虫中,常用于对URL参数进行编码和解码。 以下是一个示例代码,演示如何使用Python对字符串进行Base64编码和解码: import base64 # …

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部