千家信息网

Python怎么解决手机qq微信内存占用太多问题

发表于:2024-10-03 作者:千家信息网编辑
千家信息网最后更新 2024年10月03日,这篇文章主要介绍"Python怎么解决手机qq微信内存占用太多问题"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么解决手机qq微信内存占用太多问
千家信息网最后更新 2024年10月03日Python怎么解决手机qq微信内存占用太多问题

这篇文章主要介绍"Python怎么解决手机qq微信内存占用太多问题"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么解决手机qq微信内存占用太多问题"文章能帮助大家解决问题。

    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 "X" % (hash & 0xFFFFFFFF)

    去重复

    看到这里,想必都明白如何去重复文件了:

    1. 用 glob.glob 扫描所有文件,

    2. 把文件的 crc32 值放入字典中,

    3. 找到字典中已经存在的 crc32 值的key,删除当前文件。

    import osimport zlibimport 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 "X" % (hash & 0xFFFFFFFF) scanning_floder(r"C:\Users\xxxx\Documents\WeChat Files\xxxx\FileStorage\**\*")

    关于"Python怎么解决手机qq微信内存占用太多问题"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

    0