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


Posted in Python onJanuary 09, 2021

给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若存在重复则删除

主要涉及的知识点有:

  • os模块综合应用
  • glob模块综合应用
  • 利用filecmp模块比较两个文件

步骤分析

该程序实现的逻辑可以具化为:

遍历获取给定文件夹下的所有文件,然后通过嵌套循环两两比较文件是否相同,如果相同则删除后者。

实现问题的关键就变成了

如何判断两个文件是否相同?

在这里我们可以使用filecmp模块,来看看官方的介绍文档:

  • filecmp.cmp(f1, f2, shallow=True)
  • 比较名为f1和f2的文件,如果它们似乎相等则返回True,否则返回False
  • 如果shallow为真,那么具有相同os.stat()签名的文件将会被认为是相等的。否则,将比较文件的内容。

所以可以这样使用

# 假设x和y两个文件是相同的
print(filecmp.cmp(x, y))
# True

解决了这个问题,我们就可以开始写代码了!

Python实现

导入需要的库并设置目标文件夹路径

import os
import glob
import filecmp

dir_path = r'C:\\xxxx'

接着遍历获取所有文件的绝对路径,我们可以利用glob模块的通配符结合recursive参数即可完成,框架如下:

for file in glob.glob(path + '/**/*', recursive=True):
  pass

由于遍历获取每一个文件或者文件夹后,需要判断是否是文件,如果是文件则可能将绝对路径存放到列表中,这里需要再完成两个事情:

  • 首先创建一个空列表,后面用list.append(i)添加文件路径
  • 接着利用os.path.isfile(i)判断是否是文件,返回True则执行添加元素的操作

具体代码如下

file_lst = []

for i in glob.glob(dir_path + '/**/*', recursive=True):
  if os.path.isfile(i):
    file_lst.append(i)

上一步我们获取了目标文件夹下的所有文件路径,接下来就可以嵌套遍历这个路径列表,其中filecmp.cmp进行文件判断,os.remove进行文件删除

for x in file_lst:
  for y in file_lst:
    if x != y:
      if filecmp.cmp(x, y):
        os.remove(y)

这里的代码已经实现了大致逻辑,但有一个细节需要考虑到:有可能循环到文件已经被前面的判断删除了,导致os.remove(file)由于文件不存在而报错

因此,可以用os.path.exists对文件存在进行判断,如下所示:

for x in file_lst:
  for y in file_lst:
    if x != y and os.path.exists(x) and os.path.exists(y):
      if filecmp.cmp(x, y):
        os.remove(y)

这样,一个简易的文件去重小程序就完成了,完整代码如下:

import os
import glob
import filecmp

dir_path = r'C:\xxxx'

file_lst = []

for i in glob.glob(dir_path + '/**/*', recursive=True):
  if os.path.isfile(i):
    file_lst.append(i)

for x in file_lst:
  for y in file_lst:
    if x != y and os.path.exists(x) and os.path.exists(y):
      if filecmp.cmp(x, y):
        os.remove(y)

写在最后

通过本文的Python自动化脚本制作过程,我们可以再次体会Python办公自动化的强大

到此这篇关于用Python自动清理电脑内重复文件,只要10行代码的文章就介绍到这了,更多相关python 自动清理重复文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python中使用lambda高效操作列表的教程
Apr 24 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
对numpy中array和asarray的区别详解
Apr 17 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
对Python w和w+权限的区别详解
Jan 23 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
Python的形参和实参使用方式
Dec 24 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
python字典进行运算原理及实例分享
Aug 02 Python
selenium+headless chrome爬虫的实现示例
Jan 08 #Python
plt.figure()参数使用详解及运行演示
Jan 08 #Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 #Python
利用python查看数组中的所有元素是否相同
Jan 08 #Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
Jan 08 #Python
tensorflow与numpy的版本兼容性问题的解决
Jan 08 #Python
matplotlib自定义鼠标光标坐标格式的实现
Jan 08 #Python
You might like
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
php-msf源码详解
2017/12/25 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
Python yield使用方法示例
2013/12/04 Python
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
Python多分支if语句的使用
2020/09/03 Python
函数指针的定义是什么
2016/08/14 面试题
给老婆的保证书范文
2014/04/28 职场文书
爱国演讲稿400字
2014/05/07 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
团日活动总结怎么写
2014/06/25 职场文书
雷锋的观后感
2015/06/10 职场文书
小学生读书笔记范文
2015/06/30 职场文书
学校团代会开幕词
2016/03/04 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers