python编程实现清理微信重复缓存文件
作者:Python 技术 时间:2022-06-20 02:12:12
文 | 某某白米饭
来源: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\**\*")
来源:https://blog.csdn.net/weixin_48923393/article/details/120591061
标签:python,微信清理,缓存
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
从SQL Server2000升级到2005的过程解析
2009-01-13 14:07:00
用JS实现渐变效果,兼容各款浏览器
2008-09-13 19:10:00
MySQL的一级防范检查列表
2011-12-14 18:39:22
javascript结合canvas实现图片旋转效果
2023-08-07 23:47:59
ASP防盗链及防下载的方法
2007-09-19 12:22:00
Facebook开源一站式服务python时序利器Kats详解
2023-11-13 18:29:13
![](https://img.aspxhome.com/file/2023/7/62877_0s.png)
浅析SQL Server与Oracle数据库的区别
2007-10-31 11:39:00
基于php socket(fsockopen)的应用实例分析
2023-11-18 21:38:32
如何用Sleep函数编译一个定时组件?
2010-06-13 14:35:00
微信跳一跳辅助python代码实现
2023-03-26 15:25:50
Go for-range 的 value值地址每次都一样的原因解析
2023-09-23 12:59:20
创意设计:字母趣味组合
2008-01-26 18:50:00
![](https://img.aspxhome.com/file/UploadPic/20081/26/20081261932359s.jpg)
瀑布流布局浅析
2011-09-16 20:18:09
Web 设计:实现干净代码的12条定律
2008-12-04 13:27:00
![](https://img.aspxhome.com/file/UploadPic/200812/4/22008111521256-30.gif)
更改localhost为其他名字的方法
2023-11-23 08:07:52
ACCESS入门教程:用向导建立数据库
2008-01-17 12:46:00
![](https://img.aspxhome.com/file/UploadPic/20081/17/20081171368486s.gif)
Python中__slots__属性介绍与基本使用方法
2023-11-22 02:45:59
Oracle中instr函数使用方法
2023-07-23 19:14:06
2008年个性设计挂历参考
2007-12-29 20:30:00
![](https://img.aspxhome.com/file/UploadPic/200712/29/20071229203233936s.jpg)
PDO::exec讲解
2023-06-13 04:04:40