微信和 QQ 都有一个存放缓存文件的文件夹,微信在设置 --> 文件管理,QQ 在系统设置 --> 基本设置 --> 文件管理 --> 打卡个人文件中找到它,平时大家对这个文件夹关注度不高,这个文件夹慢慢的,偷偷的就占用了好几十个 G 的磁盘空间。下面就用 Python 写个删除重复文件的脚本清理这些空间。

glob 模块

glob 模块非常简单,就是用来查找文件和文件夹。查找文件只用到三个匹配符:"*", "?", "[]"。

通配符 功能

  1. *:匹配0或多个字符
  2. **:匹配所有文件,目录,子目录和子目录里面的文件
  3. ?:匹配一个字符,这里与正则表达式? (正则?匹配前面表达式0次或者1次)
  4. []:匹配指定范围内的字符,如: [1-9]匹配1至9内的字符
  5. [!]:匹配不在指定范围内的字符

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 = 0while True:s = fh.read(65536)if not s:breakhash = zlib.crc32(s, hash)return "%08X" % (hash & 0xFFFFFFFF)
复制代码

去重复

看到这里,想必都明白如何去重复文件了:1. 用 glob.glob 扫描所有文件,2. 把文件的 crc32 值放入字典中,3. 找到字典中已经存在的 crc32 值的key,删除当前文件。

import os
import zlib
import 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 = 0while True:s = f.read(1024)if not s:breakhash = zlib.crc32(s, hash)return "%08X" % (hash & 0xFFFFFFFF)scanning_floder(r"C:\Users\xxxx\Documents\WeChat Files\xxxx\FileStorage\**\*")
复制代码

以上就是本次分享的所有内容,每日干货分享

30 行 python 代码清理微信中重复的缓存文件相关推荐

  1. 30行python代码实现微信“拍一拍”

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 一腔热血勤珍重,洒去犹能化碧涛. ...

  2. 30行python代码实现微信自动陪女盆友聊天(itchat-uos + 无限制调用)

    先放代码: 再放个文字的(方便复制): import itchat import requestsdef get_reply(keyword):try:url = f"https://ope ...

  3. 如何用python破解热点_用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快

    原标题:用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快 当我们拖着疲惫的身体下班回到家,想开开心心的吹着空调风扇吃着西瓜,然后手机连上wifi打一把游戏好好舒服下,然而家里wif ...

  4. 30行python代码设计_30行Python代码实现3D数据可视化

    原标题:30行Python代码实现3D数据可视化 作者:潮汐 来源:Python技术 欢迎来到 编程教室~ 我们之前的文章中有讲解过不少 Matplotlib 的用法,比如: 之前我们基本都是用它来绘 ...

  5. 王者荣耀——bat批处理文件,自动刷金币版(脱胎于30行Python代码刷金币版),Windows双击即可运行!

    参考<30行Python代码刷王者荣耀金币>:https://segmentfault.com/a/1190000012520431 1.源代码 以下是源代码部分,全部复制到文本文档, 用 ...

  6. python红色的颜色表达式_50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)...

    目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶.视频监控.工业质检.医疗诊断等 ...

  7. c语言微信挑一挑编程,100行python代码实现微信跳一跳辅助程序

    写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...

  8. 100行python代码做一个程序_100行python代码实现微信跳一跳辅助程序

    写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...

  9. 30行Python代码,打造一个微信群聊助手~

    大家都知道,最近代码君迷上了Python,一直在研究这门语言,还是那句话,人生苦短,我学Python,今天代码君要教大家一个黑科技,30行代码实现自己定制的微信群聊助手,这个助手有什么用呐,就是用来活 ...

最新文章

  1. C# 字符串 数据类型 判断 与特定规则验证
  2. 人脸识别(通过照片库区别人物)
  3. Centos 6.4 python 2.6 升级到 2.7一起的MySQLdb不能使用的解决问题
  4. boost::iostreams::stream_offset用法的测试程序
  5. 集成Swagger(API)---SpringBoot
  6. CCF202009-2 风险人群筛查
  7. vue用公共组件页面传值_vuejs几种不同组件(页面)间传值的方式
  8. mysql的驱动connect放在哪里_MySQL的JDBC驱动程序下载地址
  9. 两种方法,给你的Safari浏览器添加必应/有道/谷歌网页即时翻译插件
  10. 五子课堂---第一课(连珠基础一)
  11. uml点餐系统活动图_大学生网上订餐系统--UML建模
  12. C#实现自动升级(附源码)
  13. 国产光刻机再次斩获新订单,业绩大幅衰退的ASML如遭雷击
  14. access行列转换。
  15. 实时摄像头流传输(直播)
  16. 1U,2U,3U,4U机箱面板,U的含义
  17. java打印日志的几种方式
  18. Java删除Maven下的.lastUpdated文件
  19. 是不正确的python语句_关于Python的if else语句,调用else不正确的问题
  20. 使用百度AI开放平台实现图像识别

热门文章

  1. 哥好鸟 哥啊鸟 哥回鸟
  2. 公钥密码 之 素数,费马定理与欧拉定理
  3. Flutter之实现生成二维码,扫描二维码
  4. christoffel 符号的直观解释
  5. 用钩子函数实现鼠标动作录制
  6. Python机器学习笔记 使用scikit-learn工具进行PCA降维
  7. 阅读芯片手册及硬件原理图的方法
  8. python爬取数据保存为txt格式
  9. c语言判断后缀是否为bmp,c语言_常见图片格式判断
  10. 示波器与智能手机通过FTP互通文件传输