用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使用arp欺骗伪造网关的方法
Apr 24 Python
python通过post提交数据的方法
May 06 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
python使用str & repr转换字符串
Oct 13 Python
python中正则表达式与模式匹配
May 07 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
python实现斗地主分牌洗牌
Jun 22 Python
Python中读取文件名中的数字的实例详解
Dec 25 Python
Python实现简单的猜单词
Jun 15 Python
Python函数中的不定长参数相关知识总结
Jun 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
第六章 php目录与文件操作
2011/12/30 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Python中运算符"=="和"is"的详解
2016/10/08 Python
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
小学教师师德演讲稿
2014/05/06 职场文书
企业文明单位申报材料
2014/05/16 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
2014年统战工作总结
2014/12/09 职场文书
大学班干部竞选稿
2015/11/20 职场文书