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进程间通信用法实例
Jun 04 Python
python使用pygame框架实现推箱子游戏
Nov 20 Python
对python的输出和输出格式详解
Dec 08 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
python  logging日志打印过程解析
Oct 22 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
python中entry用法讲解
Dec 04 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 Python
Python 全局空间和局部空间
Apr 06 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 #Python
Python字典的基础操作
Nov 01 #Python
Python集合的基础操作
Nov 01 #Python
python基础之类属性和实例属性
python基础之类方法和静态方法
Python Matplotlib绘制条形图的全过程
python基础之模块的导入
You might like
桌面中心(二)数据库写入
2006/10/09 PHP
用PHP和ACCESS写聊天室(一)
2006/10/09 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
js实现二代身份证号码验证详解
2014/11/20 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
Python的一些用法分享
2012/10/07 Python
Python实现的批量下载RFC文档
2015/03/10 Python
Python中join和split用法实例
2015/04/14 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
销售行政专员职责
2014/01/03 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
销售个人求职信范文
2014/04/28 职场文书
运动会方阵口号
2014/06/07 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js