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实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
python实现简易版计算器
Jun 22 Python
Python将8位的图片转为24位的图片实现方法
Oct 24 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
Django框架使用mysql视图操作示例
May 15 Python
Apache部署Django项目图文详解
Jul 30 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
python中web框架的自定义创建
Sep 08 Python
使用python制作一个解压缩软件
Nov 13 Python
Python中os模块功能与用法详解
Feb 26 Python
python json.dumps中文乱码问题解决
Apr 01 Python
详解python中groupby函数通俗易懂
May 14 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
一个简单的php路由类
2016/05/29 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
jquery中的 $("#jb51")与document.getElementById("jb51") 的区别
2011/07/26 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
小程序实现分类页
2019/07/12 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
Python中tell()方法的使用详解
2015/05/24 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
详解python中*号的用法
2019/10/21 Python
python如何提升爬虫效率
2020/09/27 Python
印度服装购物网站:Limeroad
2018/09/26 全球购物
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
企业厂务公开实施方案
2014/03/26 职场文书
四群教育工作实施方案
2014/03/26 职场文书
会计系毕业生求职信
2014/05/28 职场文书
学校运动会霸气口号
2014/06/07 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
趣味运动会简讯
2015/07/20 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python