用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 THREADING模块中的JOIN()方法深入理解
Feb 18 Python
python print 按逗号或空格分隔的方法
May 02 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
django 控制页面跳转的例子
Aug 06 Python
浅析python redis的连接及相关操作
Nov 07 Python
python 实现屏幕录制示例
Dec 23 Python
Python实现自动访问网页的例子
Feb 21 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
Python xlrd/xlwt 创建excel文件及常用操作
Sep 24 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
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php实现分页显示
2015/11/03 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
php实现socket推送技术的示例
2017/12/20 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
javascript整除实现代码
2010/11/23 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
三星美国官网:Samsung美国
2017/02/06 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
自强之星事迹材料
2014/05/12 职场文书
技能比武方案
2014/05/21 职场文书
2015年路政工作总结
2015/05/22 职场文书
入党积极分子党支部意见
2015/06/02 职场文书