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中的pprint折腾记
Jan 21 Python
python判断windows系统是32位还是64位的方法
May 11 Python
Python中zfill()方法的使用教程
May 20 Python
django基础之数据库操作方法(详解)
May 24 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
python 实现UTC时间加减的方法
Dec 31 Python
python实现浪漫的烟花秀
Jan 30 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
python能自学吗
Jun 18 Python
python数据分析之用sklearn预测糖尿病
Apr 22 Python
pytorch 实现多个Dataloader同时训练
May 29 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
PHP 的几个配置文件函数
2006/12/21 PHP
php的一个登录的类 [推荐]
2007/03/16 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
超实用的javascript时间处理总结
2016/08/16 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
解决python爬虫中有中文的url问题
2018/05/11 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
C++的几个面试题附答案
2016/08/03 面试题
小学数学教学反思
2014/02/02 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
法务专员岗位职责
2015/02/14 职场文书