python编程实现清理微信重复缓存文件


Posted in Python onNovember 01, 2021

文 | 某某白米饭

来源:Python 技术「ID: pythonall」

微信和 QQ 都有一个存放缓存文件的文件夹,微信在设置 --> 文件管理,QQ 在系统设置 --> 基本设置 --> 文件管理 --> 打卡个人文件中找到它,平时大家对这个文件夹关注度不高,这个文件夹慢慢的,偷偷的就占用了好几十个 G 的磁盘空间。下面就用 Python 写个删除重复文件的脚本清理这些空间。

glob 模块

glob 模块非常简单,就是用来查找文件和文件夹。查找文件只用到三个匹配符:"*", "?", "[]"。

通配符 功能

*:匹配0或多个字符

**:匹配所有文件,目录,子目录和子目录里面的文件

?:匹配一个字符,这里与正则表达式? (正则?匹配前面表达式0次或者1次)

[]:匹配指定范围内的字符,如: [1-9]匹配1至9内的字符

[!]:匹配不在指定范围内的字符

glob方法

这个方法返回所有匹配的文件路径列表

# 当前路径下所有 py 文件
for fname in glob.glob("**/*.py",recursive=True):
    print(fname)
 
# 当前路径文件 py 下 py 文件
for fname in glob.glob("py/*.py"):
    print(fname)
 
# 单字通配符 ?,当前路径文件下以 Tem 开头后有一个字符文件夹
for fname in glob.glob("Tem?"):
    print(fname)
 
# 范围通配符[],当前路径文件下以 Tem 开头后一个数字符的 py 文件
for fname in glob.glob("Tem[0-9].py"):
    print(fname)
 
# 范围通配符[!],当前路径文件下以 Tem 开头后一个非数字符的 py 文件
for fname in glob.glob("Tem[!0-9].py"):
    print(fname)
 
windowns下
file = glob.glob(r'D:\logs\*\*')

zlib.crc32

CRC32 算法概述 CRC 全称 Cyclic Redundancy Check,又叫循环冗余校验。和 md5 码一样都是 hash 的。当两个文件内容的 CRC32 相同的时候,这个文件也就是相同的。反之,两个文件就是不同的文件。

def crc32(file_path):
    with open(file_path, 'rb') as fh:
        hash = 0
        while True:
            s = fh.read(65536)
            if not s:
                break
            hash = zlib.crc32(s, hash)
        return "%08X" % (hash & 0xFFFFFFFF)

去重复

看到这里,想必都明白如何去重复文件了:1. 用 glob.glob 扫描所有文件,2. 把文件的 crc32 值放入字典中,3. 找到字典中已经存在的 crc32 值的key,删除当前文件。

import os
import zlib
import glob
def scanning_floder(glob_path):
    crc32Dict = {}
    for fname in glob.glob(glob_path, recursive=True):
        if os.path.isfile(fname):
            crc = crc32(fname)
            if crc in crc32Dict:
                print('已经存在文件:' + crc32Dict.get(crc))
                print('重复文件:' + fname)
                print('删除文件:' + fname)
                os.remove(fname)
                print('')
            else:
                crc32Dict[crc] = fname
def crc32(file_path):
    with open(file_path, 'rb') as f:
        hash = 0
        while True:
            s = f.read(1024)
            if not s:
                break
            hash = zlib.crc32(s, hash)
        return "%08X" % (hash & 0xFFFFFFFF)
 
scanning_floder(r"C:\Users\xxxx\Documents\WeChat Files\xxxx\FileStorage\**\*")

python编程实现清理微信重复缓存文件 

总结

本篇介绍了 glob 模块的用法和 crc32 值的计算,大家学废了吗?

更多关于python清理重复缓存文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
比较详细Python正则表达式操作指南(re使用)
Sep 06 Python
Python基础之函数用法实例详解
Sep 10 Python
神经网络python源码分享
Dec 15 Python
python os用法总结
Jun 08 Python
Python Flask框架模板操作实例分析
May 03 Python
python pygame实现方向键控制小球
May 17 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 Python
python 命令行传入参数实现解析
Aug 30 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
python可以用哪些数据库
Jun 22 Python
Python3中对json格式数据的分析处理
Jan 28 Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
phpmyadmin的#1251问题
2006/11/25 PHP
PHP 编程的 5个良好习惯
2009/02/20 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
js打造数组转json函数
2015/01/14 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
vue-loader教程介绍
2017/06/14 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python中实现输入一个整数的案例
2020/05/03 Python
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
工程管理专业毕业生自荐信
2014/01/24 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
土地转让协议书范本
2014/04/15 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
大学生实训报告总结
2014/11/05 职场文书
优秀团支部申报材料
2014/12/26 职场文书
小学教师个人总结
2015/02/05 职场文书
2015年度保密工作总结
2015/04/24 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript