大家好,又到了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

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

首先创建一个空列表,后面用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代码自动清理电脑内重复文件,解放双手!...相关推荐

  1. 10 行 Python 代码自动清理电脑内重复文件,解放双手!

    来源 | 早起Python 头图 | 视觉中国 前言 大家好,又到了Python办公自动化系列. 今天分享一个系统层面的自动化案例: 「给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若 ...

  2. 10行Python代码自动清理电脑内重复文件,释放双手!

    给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若存在重复则删除」 主要涉及的知识点有: os模块综合应用glob模块综合应用利用filecmp模块比较两个文件步骤分析 该程序实现的逻辑 ...

  3. 10行Python代码自动清理电脑内重复文件

    给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若存在重复则删除 主要涉及的知识点有: os模块综合应用 glob模块综合应用 利用filecmp模块比较两个文件 步骤分析 该程序实现的 ...

  4. 10行Python代码自动清理电脑内重复文件,解放双手!

    前言 今天分享一个系统层面的自动化案例: 「给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若存在重复则删除」 主要涉及的知识点有: os模块综合应用 glob模块综合应用 利用file ...

  5. linux将所有文件生成lst_10行Python代码自动清理电脑内重复文件,解放双手!

    作者:陈熹 来源:早起Python 大家好,又到了Python办公自动化系列. 今天分享一个系统层面的自动化案例: 「给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若存在重复则删除」 ...

  6. 截取文件最后10行_10 行 Python 代码自动清理电脑内重复文件,解放双手

    来源 | 早起Python 头图 | 视觉中国 前言 大家好,又到了Python办公自动化系列. 今天分享一个系统层面的自动化案例: 「给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若 ...

  7. 电脑中的文件夹怎样转换成压缩包?干货分享!如何将电脑中的文件夹调整为压缩包?

    我们经常使用电脑来操作一些文件数据整理传播,对于我们的大部分数据信息我们会建立一个文件夹来进行保存,但是我们想要进行将数据信息已文件夹的方式进行传播是无法进行发送的,因为文件夹中包含多个数据内容,发送 ...

  8. 10 行 Python 代码自动清理电脑重复文件,解放双手!

    作者 | 陈熹 来源 | 早起Python(ID:zaoqi-python) 前言 大家好,又到了 Python 办公自动化系列. 今天分享一个系统层面的自动化案例: 「给定一个文件夹,使用 Pyth ...

  9. 存储在icloud云盘文件夹顶层_重大问题!icloud云盘自动重命名且丢失文件… - Apple 社区...

    情景:家中是mac,公司是windows,为了在家使用mac工作方便而将公司文件储存在icloud云盘中共享. 配置:公司windows 10电脑上安装最新icloud云盘客户端,并将文件保存在icl ...

最新文章

  1. springboot jar服务器运行后无法请求_Spring Boot微服务中Chaos Monkey的应用
  2. 《Android开发艺术探索》自定义View中关于“HorizontalScrollViewEx”的改进
  3. python安装第三方库
  4. 找不到redis得pid文件_电脑提示Windows找不到文件?试试这两个技巧,轻松解决!...
  5. linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别
  6. python正则表达式面试_Python面试 Re-正则表达式
  7. C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
  8. LeetCode开心刷题二十七天——51. N-Queens
  9. 没有lrzsz,怎么传文件到服务器?
  10. 关于Ajax的一揽子工程(2)
  11. 支持了Unicode及各国字符集编码识别]改善IDA6.8对中文等非英语国家的ANSI字符串显示支持不佳的问题...
  12. 让模拟器也支持GPS定位(模拟实现)
  13. python无人驾驶技术_智能汽车无人驾驶资料调研(一)
  14. java se和ocjp_OCJP 考试题之七 - osc_sejhgcp0的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. 火狐中国区linux无法同步,教大家火狐浏览器同步数据失败的几点原因
  16. 【论文】学术论文写作总结
  17. 视频(音频)播放组件——西瓜播放器
  18. 国际青少年计算机技能大赛英语,竞赛:2017中学生英语能力、青少年信息学奥赛!...
  19. 随笔杂记(十)——C++:C4996报错解决方法
  20. 《穷爸爸与富爸爸》语录之二

热门文章

  1. “上班那点儿事交流圈”发展计划
  2. 为什么事务日志自动增长会降低你的性能
  3. [UI]抽屉菜单DrawerLayout分析(三)
  4. 一些常用的WebServices
  5. CImage类 from http://blog.sina.com.cn/s/blog_487547aa0100an6k.html
  6. Web中间件常见安全漏洞总结
  7. 提高Eclipse的运行速度 去掉JPA这个Eclipse 插件
  8. 指定单元格里面的,内容发生变化,触发事件,调用VBA代码。
  9. java邮件程序实例_java 发送邮件简单实例
  10. python 获取参数模块_Python中获取启动程序时后面跟的参数的方法(optparse模块)【冰斌棒】...