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创建和使用字典实例详解
Nov 01 Python
python爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 Python
Python实现简单多线程任务队列
Feb 27 Python
json跨域调用python的方法详解
Jan 11 Python
python os用法总结
Jun 08 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
关于numpy数组轴的使用详解
Dec 05 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
PHP时间戳使用实例代码
2008/06/07 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
python 简单的多线程链接实现代码
2016/08/28 Python
python判断数字是否是超级素数幂
2018/09/27 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
WxPython实现无边框界面
2019/11/18 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
商务日语专业的自荐信
2014/05/23 职场文书
主持人开幕词
2015/01/29 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
2015年超市工作总结
2015/04/09 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python
vue使用element-ui按需引入
2022/05/20 Vue.js