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开发编码规范
Sep 08 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
Python求离散序列导数的示例
Jul 10 Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 Python
Django后台管理系统的图文使用教学
Jan 20 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
Python迭代器协议及for循环工作机制详解
Jul 14 Python
python re的findall和finditer的区别详解
Nov 15 Python
教你使用一行Python代码玩遍童年的小游戏
Aug 23 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
js的with语句使用方法
2007/09/21 Javascript
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
Python检测网站链接是否已存在
2016/04/07 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
Python yield 使用方法浅析
2017/05/20 Python
Python输入二维数组方法
2018/04/13 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
化工专业推荐信范文
2013/11/28 职场文书
助学感谢信范文
2015/01/21 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
检讨书怎么写?
2019/06/21 职场文书
利用Pycharm连接服务器的全过程记录
2021/07/01 Python