用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 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
python xlsxwriter库生成图表的应用示例
Mar 16 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
pandas计算最大连续间隔的方法
Jul 04 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
python re.match()用法相关示例
Jan 27 Python
Python离线安装openpyxl模块的步骤
Mar 30 Python
python保存图片的四个常用方法
Feb 28 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 url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP中如何判断AJAX提交的数据
2012/02/05 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
python实现飞机大战小游戏
2019/11/08 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
C语言笔试题
2014/09/04 面试题
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
学生干部的自我评价分享
2014/01/18 职场文书
学校十一活动方案
2014/02/01 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
基于python实现银行管理系统
2021/04/20 Python
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL
Nginx如何配置根据路径转发详解
2022/07/23 Servers