python编程实现清理微信重复缓存文件
作者:Python 技术 发布时间:2022-06-20 02:12:12
标签: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 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
0
投稿
猜你喜欢
- java的简单介绍Java是一种通用的面向对象编程语言,旨在生成可在任何地方使用相同代码的代码。这种编程语言是基于类的,面向对象的和人类可读
- 介绍godep是解决包依赖的管理工具,目前最主流的一种,原理是扫描记录版本控制的信息,并在go命令前加壳来做到依赖管理godep 建议在 g
- CSS3草案中定义了{opacity:来声明元素的透明度,这已经得到了大多数现代浏览器的支持,而IE则很早通过特定的私有属性filter来实
- 你是不是觉得每次新建项目都要写一次# coding:utf-8,感觉特烦人呐!懒(fu)人(li)教程来啦,先看效果图吧中文版如图进入设置然
- 最近笔者学会了用FrontPage XP做网页,心理特高兴,非常想把我在制作主页过程中的一些经验和大家交流交流、切磋切磋,我们一起来看看吧。
- Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4
- 这段程序的方法是利用XMLHTTP来读取腾讯网站的相应HTML代码获取QQ的头像,根据这个想法,我们还
- 佛爷去了公司的年夜饭,我有点无聊就在公司 Coding 点东西玩玩,于是就有了这玩意。请允许我很猥·琐得将这个游戏称之为“是男人坚持 100
- 在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范
- 我们在浏览网页的时候偶尔会遇到一些陌生的网页交互行为,通常情况下它们并不会影响你的正常使用,之所以出现情况往往是因为,设计师在设计某个交互方
- 本文以修改用户名密码单元为案例,编写测试脚本。完成修改用户名密码模块单元测试。(ps.这个demo中登陆密码为“admin”)1. 打开浏览
- 前言 绝大多数的Oracle数据库性能问题都是由于数据库设计不合理造成的,只有少部分问题根植于Database Buffer、Share P
- 我们这里所说的head区域,是指页页html代码的<head>和</head>之间的内容。在以前的文章中,主要介绍了
- 主要实现功能1、用户输入用户名,在用户名文件中查找对应的用户,若无对应用户名则打印输入错误2、用户名输入正确后,进行密码匹配。输入密码正确则
- 所谓“评论”不是必须得有文本框,用户录入提交数据才算,广义上的评论包括用户的任何“表态”,典型如打分。我接触电子商务时间并不长,最早应该是0
- 问题:Python2获取包含中文的文件名是如果不转码会出现乱码。这里假设要测试的文件夹名为test,文件夹下有5个文件名包含中文的文件分别为
- 注意:安装时要保证Oracle安装目录不能带有中文字符(如果第一次安装出现“加载数据库错误areasQueries”的错误,一般是因为Ora
- 1、下载安装MySQLdb类库http://www.djangoproject.com/r/python-mysql/2、修改setting
- 1. yum list installed | grep php 查看安装的php版本mod_php72w.x86_64 7.2.1-1.w
- 本文实例讲述了JS Object.preventExtensions(),Object.seal()与Object.freeze()用法。分