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 相关文章推荐
web.py在模板中输出美元符号的方法
Aug 26 Python
Python获取单个程序CPU使用情况趋势图
Mar 10 Python
简单谈谈Python中的闭包
Nov 30 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
在Python中预先初始化列表内容和长度的实现
Nov 28 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
150行python代码实现贪吃蛇游戏
Apr 24 Python
python 如何读、写、解析CSV文件
Mar 03 Python
python中os.path.join()函数实例用法
May 26 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
php实现简单文件下载的方法
2015/01/30 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
网页javascript精华代码集
2007/01/24 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
Python2.x与Python3.x的区别
2016/01/14 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
Python 实现集合Set的示例
2020/12/21 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
迎新晚会邀请函
2014/02/01 职场文书
法律进企业活动方案
2014/03/04 职场文书
同学会主持词
2014/03/18 职场文书
行政监察建议书
2014/05/19 职场文书
工作试用期自我评价
2015/03/10 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers