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

yizhihongxing

下面是详细讲解如何使用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日

相关文章

  • Python学习之用pygal画世界地图实例

    下面我将详细讲解如何使用pygal库画世界地图的实例攻略。这个过程主要分为以下几个步骤: 安装pygal库:在命令行中输入pip install pygal即可安装。 导入pygal库和需要使用的数据:pygal库提供多种地图类型,这里我们使用pygal.maps.world.World来实现世界地图。我们还需要一些数据来给地图填色,以示不同的国家或地区之间…

    python 2023年5月19日
    00
  • python多线程编程方式分析示例详解

    关于“python多线程编程方式分析示例详解”的完整攻略,我会从以下几个方面进行讲解: 多线程的概念和优势 多线程的实现方式 常用的多线程编程模型 两条示例详解 1. 多线程的概念和优势 多线程是指在一个进程中包含多个执行流,它们可以并行或并发地执行。相比于单线程,多线程编程有以下优势: 提高程序的响应速度和执行效率,特别是对于IO密集型操作或计算密集型操作…

    python 2023年6月6日
    00
  • python os.stat()如何获取相关文件的系统状态信息

    下面是Python os.stat()获取文件系统状态信息的详细攻略。 1. os.stat()方法介绍 os.stat()方法用于获取给定文件或目录的系统状态信息。该方法返回的是一个包含文件或目录的元数据的对象,包括文件类型、访问时间、修改时间、创建时间、文件大小、用户ID、组ID等信息。 2. os.stat()方法的语法 os.stat()方法的语法如…

    python 2023年5月14日
    00
  • Pytho爬虫中Requests设置请求头Headers的方法

    以下是关于Python爬虫中使用Requests设置请求头Headers的攻略: Python爬虫中Requests设置请求头Headers的方法 在使用Python爬虫进行网页数据抓取时,有时需要设置请求头Headers,以模拟浏览器发送请求。以下是Python爬虫中使用Requests设置请求头Headers的攻略。 设置User-Agent 在Pyth…

    python 2023年5月15日
    00
  • python3.7安装matplotlib失败问题的完美解决方法

    以下是关于“Python3.7安装matplotlib失败问题的完美解决方法”的完整攻略: 问题描述 在安装 matplotlib 库时可能会遇到一些问题,安装、依赖项错误等。本文将介绍 Python3.7 安装 matplotlib 失败问题的完美解方法。 解决方法 以下步骤解决 Python3.7 安装 matplotlib 失败问题: 检查依赖项。 在…

    python 2023年5月13日
    00
  • python实现读取大文件并逐行写入另外一个文件

    当文件过大时,将整个文件读取并处理会导致内存爆炸。因此在处理大文件时,需要一行一行地处理,这样可以在占用比较小的内存情况下完成数据处理。以下是实现读取大文件并逐行写入另外一个文件的攻略: 1. 打开文件 首先需要打开待读取的大文件和待写入的文件,使用open()函数即可打开文件,常用参数有文件名、打开模式。对于大文件来说,还需要设置缓冲区大小参数,即buff…

    python 2023年6月5日
    00
  • Python操作列表的常用方法分享

    在Python中,列表是一种常见的数据结构,它可以用来存储和处理一组数据。本攻略将详细介绍Python中操作列表的常用方法,包括如何创建、访问、添加、删除、修改等方面。 创建列表 在Python中,可以使用方括号[]来创建一个列表。以下是一个示例代码,演示如何创建一个列表: # 创建一个列表 my_list = [1, 2, 3, 4, 5] # 输出结果 …

    python 2023年5月13日
    00
  • python实现自动解数独小程序

    让我来详细讲解“Python实现自动解数独小程序”的完整攻略,这里分为以下几个步骤: 1. 获取数独题目数据 数独题目数据可以从文件中读取或者通过API获取,接下来我们以从文件中获取数独题目数据为例进行讲解。 def read_sudoku(file_path): """ 读取数独题目数据 :param file_path: 文…

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