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如何抓取天猫商品详细信息及交易记录
Feb 23 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
flask框架视图函数用法示例
Jul 19 Python
python 获取sqlite3数据库的表名和表字段名的实例
Jul 17 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
python内置进制转换函数的操作
Jun 02 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
十天学会php之第一天
2006/10/09 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
Python迭代用法实例教程
2014/09/08 Python
跟老齐学Python之做一个小游戏
2014/09/28 Python
python开发之字符串string操作方法实例详解
2015/11/12 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
Python返回数组/List长度的实例
2018/06/23 Python
python实现京东秒杀功能
2018/07/30 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
如何使用python传入不确定个数参数
2020/02/18 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
类、抽象类、接口的差异
2016/06/13 面试题
师范毕业生自荐信
2013/10/17 职场文书
数控技术应届生求职信
2013/11/13 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
师德师风自查材料
2014/10/14 职场文书
2014年转正工作总结
2014/11/08 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
汽车车尾标语大全
2015/08/11 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
导游词之日本富士山
2020/01/06 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
解决redis批量删除key值的问题
2022/03/23 Redis