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\**\*")

python编程实现清理微信重复缓存文件 

来源:https://blog.csdn.net/weixin_48923393/article/details/120591061

标签:python,微信清理,缓存
0
投稿

猜你喜欢

  • Python构建XML树结构的方法示例

    2023-06-22 09:35:07
  • 解决Pytorch中的神坑:关于model.eval的问题

    2021-09-17 17:16:55
  • python基于socketserver实现并发,验证客户端的合法性

    2023-04-15 09:05:38
  • Python和Go成为2019年最受欢迎的黑客工具(推荐)

    2021-05-22 16:37:17
  • 用JavaScript实现UrlEncode和UrlDecode功能

    2008-01-27 11:30:00
  • vc6编写python扩展的方法分享

    2022-05-12 16:39:30
  • gethostbyaddr在Python3中引发UnicodeDecodeError

    2023-06-15 09:34:33
  • 增强网站的魅力 网页制作技巧三则

    2007-10-04 10:06:00
  • python Pandas中数据的合并与分组聚合

    2023-06-28 12:48:04
  • Bootstrap基本样式学习笔记之表单(3)

    2024-06-05 09:11:39
  • Python中super函数用法实例分析

    2023-12-05 14:36:19
  • 基于Python函数和变量名解析

    2022-10-26 13:49:56
  • Mysql 5.7.17 winx64在win7上的安装教程

    2024-01-16 12:16:10
  • Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法

    2021-01-15 12:48:34
  • Vue0.1的过滤代码如何添加到Vue2.0直接使用

    2024-05-22 10:41:57
  • Qt6.5 grpc组件使用 + golang grpc server示例详解

    2024-02-07 21:25:12
  • python中__call__内置函数用法实例

    2022-06-04 11:46:32
  • 验证码的最高境界

    2008-05-08 14:17:00
  • python3 通过 pybind11 使用Eigen加速代码的步骤详解

    2023-05-13 21:53:18
  • 编写SQL需要注意的细节Checklist总结

    2012-10-07 10:43:57
  • asp之家 网络编程 m.aspxhome.com