30 行 python 代码清理微信中重复的缓存文件
微信和 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 = 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 代码清理微信中重复的缓存文件相关推荐
- 30行python代码实现微信“拍一拍”
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 一腔热血勤珍重,洒去犹能化碧涛. ...
- 30行python代码实现微信自动陪女盆友聊天(itchat-uos + 无限制调用)
先放代码: 再放个文字的(方便复制): import itchat import requestsdef get_reply(keyword):try:url = f"https://ope ...
- 如何用python破解热点_用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快
原标题:用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快 当我们拖着疲惫的身体下班回到家,想开开心心的吹着空调风扇吃着西瓜,然后手机连上wifi打一把游戏好好舒服下,然而家里wif ...
- 30行python代码设计_30行Python代码实现3D数据可视化
原标题:30行Python代码实现3D数据可视化 作者:潮汐 来源:Python技术 欢迎来到 编程教室~ 我们之前的文章中有讲解过不少 Matplotlib 的用法,比如: 之前我们基本都是用它来绘 ...
- 王者荣耀——bat批处理文件,自动刷金币版(脱胎于30行Python代码刷金币版),Windows双击即可运行!
参考<30行Python代码刷王者荣耀金币>:https://segmentfault.com/a/1190000012520431 1.源代码 以下是源代码部分,全部复制到文本文档, 用 ...
- python红色的颜色表达式_50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)...
目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶.视频监控.工业质检.医疗诊断等 ...
- c语言微信挑一挑编程,100行python代码实现微信跳一跳辅助程序
写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...
- 100行python代码做一个程序_100行python代码实现微信跳一跳辅助程序
写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...
- 30行Python代码,打造一个微信群聊助手~
大家都知道,最近代码君迷上了Python,一直在研究这门语言,还是那句话,人生苦短,我学Python,今天代码君要教大家一个黑科技,30行代码实现自己定制的微信群聊助手,这个助手有什么用呐,就是用来活 ...
最新文章
- C# 字符串 数据类型 判断 与特定规则验证
- 人脸识别(通过照片库区别人物)
- Centos 6.4 python 2.6 升级到 2.7一起的MySQLdb不能使用的解决问题
- boost::iostreams::stream_offset用法的测试程序
- 集成Swagger(API)---SpringBoot
- CCF202009-2 风险人群筛查
- vue用公共组件页面传值_vuejs几种不同组件(页面)间传值的方式
- mysql的驱动connect放在哪里_MySQL的JDBC驱动程序下载地址
- 两种方法,给你的Safari浏览器添加必应/有道/谷歌网页即时翻译插件
- 五子课堂---第一课(连珠基础一)
- uml点餐系统活动图_大学生网上订餐系统--UML建模
- C#实现自动升级(附源码)
- 国产光刻机再次斩获新订单,业绩大幅衰退的ASML如遭雷击
- access行列转换。
- 实时摄像头流传输(直播)
- 1U,2U,3U,4U机箱面板,U的含义
- java打印日志的几种方式
- Java删除Maven下的.lastUpdated文件
- 是不正确的python语句_关于Python的if else语句,调用else不正确的问题
- 使用百度AI开放平台实现图像识别