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 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
详解Python中用于计算指数的exp()方法
May 14 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
Python对接六大主流数据库(只需三步)
Jul 31 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
Python简易计算器制作方法代码详解
Oct 31 Python
Python hashlib模块加密过程解析
Nov 05 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
python扫描线填充算法详解
Feb 19 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 Python
Python正则表达式中flags参数的实例详解
Apr 01 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
百度留言本js 大家可以参考下
2009/10/13 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
javascript实现的登陆遮罩效果汇总
2015/11/09 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
Python注释详解
2016/06/01 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
党员先进事迹材料
2014/12/19 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书