10行Python代码自动清理电脑内重复文件,解放双手!
天作之程
共 2049字,需浏览 5分钟
·
2020-09-01 01:13
前言
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)
写在最后
-- 1、在线代码编辑器,可以分享给任何人 -- 2、Python 造假数据,用Faker就够了 -- 3、在Python中玩转Json数据
-- 留下你的“在看”呗!
评论