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 random模块(获取随机数)常用方法和使用例子
May 13 Python
Python的Flask框架中实现简单的登录功能的教程
Apr 20 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
Jan 20 Python
python中 chr unichr ord函数的实例详解
Aug 06 Python
Python Flask-web表单使用详解
Nov 18 Python
python3 读取Excel表格中的数据
Oct 16 Python
python 搜索大文件的实例代码
Jul 08 Python
Django多数据库的实现过程详解
Aug 01 Python
Python中bisect的用法及示例详解
Jul 20 Python
一篇文章搞懂python的转义字符及用法
Sep 03 Python
分享一个python的aes加密代码
Dec 22 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
php7性能提升的原因详解
2019/10/13 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
javascript加号"+"的二义性说明
2013/03/04 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
js实现日历的简单算法
2017/01/24 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
python中实现字符串翻转的方法
2018/07/11 Python
Python调用JavaScript代码的方法
2020/10/27 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
Python绘制数码晶体管日期
2021/02/19 Python
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
学校个人对照检查材料
2014/08/26 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
民间借贷借条如何写
2015/05/26 职场文书
公司老总年会致辞
2015/07/30 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python
Golang入门之计时器
2022/05/04 Golang