python实现自动清理重复文件


Posted in Python onAugust 24, 2020

前言

大家好,又到了Python办公自动化系列。

今天分享一个系统层面的自动化案例:

「给定一个文件夹,使用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

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

  1. 首先创建一个空列表,后面用list.append(i)添加文件路径
  2. 接着利用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实现自动清理重复文件的详细内容,更多关于python清理重复文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现的一个p2p文件传输实例
Jun 04 Python
使用Python下的XSLT API进行web开发的简单教程
Apr 15 Python
简单的python后台管理程序
Apr 13 Python
Python求出0~100以内的所有素数
Jan 23 Python
Python中创建二维数组
Oct 17 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
Python语法垃圾回收机制原理解析
Mar 25 Python
python对XML文件的操作实现代码
Mar 27 Python
Python基于Tkinter编写crc校验工具
May 06 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 #Python
Python+pyftpdlib实现局域网文件互传
Aug 24 #Python
实例代码讲解Python 线程池
Aug 24 #Python
详解python UDP 编程
Aug 24 #Python
PyTorch如何搭建一个简单的网络
Aug 24 #Python
Python pysnmp使用方法及代码实例
Aug 24 #Python
详解python tcp编程
Aug 24 #Python
You might like
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
介绍php设计模式中的工厂模式
2008/06/12 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
说一说Python logging
2016/04/15 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
计算机专业应届毕业生自荐信
2013/09/26 职场文书
初中军训感想300字
2014/03/05 职场文书
有创意的广告词
2014/03/18 职场文书
大专学生求职自荐信
2014/07/06 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python