您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python编程实现清理微信重复缓存文件

51自学网 2022-02-21 10:50:02
  python
这篇教程python编程实现清理微信重复缓存文件写得很实用,希望能帮到您。

文 | 某某白米饭

来源: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 osimport zlibimport globdef 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] = fnamedef 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/**/*")

fab717efc7f78f9fd263b60dfb66398f.png 

总结

本篇介绍了 glob 模块的用法和 crc32 值的计算,大家学废了吗?

更多关于python清理重复缓存文件的资料请关注51zixue.net其它相关文章!


python调用ffmpeg命令行工具便捷操作视频示例实现过程
python代码实现扫码关注公众号登录的实战
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。